diff --git a/js/medicine/surgery/genitals/fertility.js b/js/medicine/surgery/genitals/fertility.js
index e421107cee4fd815bde80f5bd4b755643592632e..abb7ad5b1cbdd89184e10f1600aac617af40a947 100644
--- a/js/medicine/surgery/genitals/fertility.js
+++ b/js/medicine/surgery/genitals/fertility.js
@@ -38,6 +38,9 @@ App.Medicine.Surgery.Procedures.RestoreFertility = class extends App.Medicine.Su
 
 	apply(cheat) {
 		this._slave.preg = 0;
+		if (V.menstruation === 1) {
+			this._slave.fertPeak = 1;
+		}
 		return this._assemble(new App.Medicine.Surgery.Reactions.Fertility());
 	}
 };
diff --git a/js/medicine/surgery/genitals/sterilize.js b/js/medicine/surgery/genitals/sterilize.js
index 8e822bd5c0951e39eae615acdd52a3798be827a6..52452311b8a51507a8cc673264353e404dadc5b4 100644
--- a/js/medicine/surgery/genitals/sterilize.js
+++ b/js/medicine/surgery/genitals/sterilize.js
@@ -41,6 +41,9 @@ App.Medicine.Surgery.Procedures.Sterilize = class extends App.Medicine.Surgery.P
 
 	apply(cheat) {
 		this._slave.preg = -2;
+		if (V.menstruation === 1) {
+			this._slave.fertPeak = 1;
+		}
 		return this._assemble(new App.Medicine.Surgery.Reactions.Sterilize());
 	}
 };
@@ -58,6 +61,9 @@ App.Medicine.Surgery.Procedures.Oophorectomy = class extends App.Medicine.Surger
 		this._slave.ovaries = 0;
 		this._slave.ovaImplant = OvaryImplantType.NONE;
 		this._slave.wombImplant = "none";
+		if (V.menstruation === 1) {
+			this._slave.fertPeak = 1;
+		}
 		return this._assemble(new App.Medicine.Surgery.Reactions.Sterilize());
 	}
 };
diff --git a/src/endWeek/nextWeek/nextWeek.js b/src/endWeek/nextWeek/nextWeek.js
index 66a0c12e5e1359560c90fe9c15d81684ca81924d..a686a853d0afcf92ed35a469219c7aca2d870c9e 100644
--- a/src/endWeek/nextWeek/nextWeek.js
+++ b/src/endWeek/nextWeek/nextWeek.js
@@ -76,8 +76,8 @@ App.EndWeek.nextWeek = function() {
 		}
 	}
 	if (V.menstruation === 1) {
-		if (V.PC.preg < 0 || (!V.PC.ovaries && !V.PC.mpreg) || V.PC.pubertyXX === 0) {
-			// Handle contraceptives and sterility.
+		if (V.PC.preg < -1 || (!V.PC.ovaries && !V.PC.mpreg) || V.PC.pubertyXX === 0 || V.PC.ovaryAge >= 47) {
+			// Handle sterility. Contraceptives will still continue the cycle.
 			V.PC.fertPeak = 1;
 		} else if (V.PC.geneticQuirks.superfetation === 2) {
 			if (V.PC.womb.length > 0) {
@@ -92,7 +92,7 @@ App.EndWeek.nextWeek = function() {
 			V.PC.fertPeak = 2;
 		} else {
 			if (V.PC.fertPeak === 0) {
-				// Assume a standard 4 week cycle, 3 weeks fertile 1 week not.
+				// Assume a standard 4 week cycle
 				V.PC.fertPeak += 3;
 			} else if (V.PC.fertPeak > 0) {
 				V.PC.fertPeak--;
@@ -221,7 +221,8 @@ App.EndWeek.nextWeek = function() {
 			}
 		}
 		if (V.menstruation === 1) {
-			if (slave.preg < 0 || (!slave.ovaries && !slave.mpreg) || slave.pubertyXX === 0) {
+			if (slave.preg < -1 || (!slave.ovaries && !slave.mpreg) || slave.pubertyXX === 0 || slave.ovaryAge >= 47) {
+				// Handle sterility. Contraceptives will still continue the cycle.
 				slave.fertPeak = 1;
 			} else if (slave.geneticQuirks.superfetation === 2) {
 				// Handle Superfetation
diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js
index 8313043e1f2a2c7820c41cbbeb789bd940611400..98cef4072b64a17854777187a03775c38c570537 100644
--- a/src/js/slaveSummaryWidgets.js
+++ b/src/js/slaveSummaryWidgets.js
@@ -235,7 +235,7 @@ App.UI.SlaveSummaryRenderers = function() {
 				makeSpan(c, "Postpartum", styles);
 			} else if (slave.preg === -1) {
 				makeSpan(c, "CC", styles);
-			} else if (V.menstruation === 1 && slave.fertPeak > 0 && slave.preg === 0) {
+			} else if (V.menstruation === 1 && slave.fertPeak > 0 && slave.preg === 0 && (slave.ovaries === 1 || slave.mpreg === 1)) {
 				makeSpan(c, "Safe", styles);
 			}  else if (slave.preg === 0 && (slave.ovaries === 1 || slave.mpreg === 1)) {
 				makeSpan(c, "Fert+", styles);
@@ -583,7 +583,7 @@ App.UI.SlaveSummaryRenderers = function() {
 				}
 			} else if (slave.preg === -1) {
 				makeSpan(c, "On contraceptives.", styles);
-			}  else if (V.menstruation === 1 && slave.fertPeak > 0 && slave.preg === 0) {
+			}  else if (V.menstruation === 1 && slave.fertPeak > 0 && slave.preg === 0 && (slave.ovaries === 1 || slave.mpreg === 1)) {
 				makeSpan(c, "Safe.", styles);
 			} else if (slave.preg === 0 && (slave.ovaries === 1 || slave.mpreg === 1)) {
 				makeSpan(c, "Fertile.", styles);