diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js
index 9df18a339519b07663a7617bc776357752799854..bbe0d4b5cb0dcef595ebf981fa078e55d7165759 100644
--- a/src/data/backwardsCompatibility/datatypeCleanup.js
+++ b/src/data/backwardsCompatibility/datatypeCleanup.js
@@ -677,6 +677,9 @@ globalThis.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		if (typeof slave.ovaImplant !== "string") {
 			slave.ovaImplant = 0;
 		}
+		if (slave.pubertyXX === 0 && slave.ovaries > 0 && slave.preg === -1) {
+			slave.preg = 0; // no contraceptives for prepubescent slaves
+		}
 		slave.fertPeak = Math.clamp(+slave.fertPeak, 0, 4) || 0;
 		slave.broodmother = Math.clamp(+slave.broodmother, 0, 3) || 0;
 		slave.broodmotherFetuses = Math.max(+slave.broodmotherFetuses, 0) || 0;
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index a5ebb5d42447c886a26c7752e320d2c09d4bcc0c..e0de72364001cb3464adfac424a4536766258758 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -1050,7 +1050,7 @@ globalThis.DefaultRules = (function() {
 	 */
 	function ProcessContraceptives(slave, rule) {
 		if ((rule.preg !== undefined) && (rule.preg !== null)) {
-			if (rule.preg === true && slave.preg === 0) {
+			if (rule.preg === true && slave.preg === 0 && slave.pubertyXX === 1) {
 				r += `<br>${slave.slaveName} is being given contraceptives.`;
 				slave.preg = -1;
 			} else if (slave.preg === -1 && rule.preg === false) {
diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js
index 3d088d06c33badba2e534ed3da2d00e131d5267d..f8188c36eddb712f18ec3248d31db9587de9c55f 100644
--- a/src/js/eventSelectionJS.js
+++ b/src/js/eventSelectionJS.js
@@ -2251,17 +2251,8 @@ globalThis.generateRandomEventPoolServant = function(eventSlave) {
 						if (eventSlave.ovaries === 1) {
 							if (eventSlave.pubertyXX === 0) {
 								if (eventSlave.preg === 0) {
-									if (eventSlave.physicalAge >= eventSlave.pubertyAgeXX - 0.5) {
-										State.variables.RESSevent.push("first period");
-										State.variables.RESSevent.push("first period");
-										State.variables.RESSevent.push("first period");
-										State.variables.RESSevent.push("first period");
-										State.variables.RESSevent.push("first period");
-										State.variables.RESSevent.push("first period");
-										State.variables.RESSevent.push("first period");
-										State.variables.RESSevent.push("first period");
-										State.variables.RESSevent.push("first period");
-										State.variables.RESSevent.push("first period");
+									if (eventSlave.physicalAge + eventSlave.birthWeek / 52 >= eventSlave.pubertyAgeXX - 0.5) {
+										State.variables.RESSevent.push(...Array.from({length: 10}, () => "first period"));
 									}
 								}
 							}
@@ -2269,17 +2260,8 @@ globalThis.generateRandomEventPoolServant = function(eventSlave) {
 						if (canPenetrate(eventSlave)) {
 							if (eventSlave.balls > 0) {
 								if (eventSlave.pubertyXY === 0) {
-									if (eventSlave.physicalAge >= eventSlave.pubertyAgeXY - 0.5) {
-										State.variables.RESSevent.push("wet dreams");
-										State.variables.RESSevent.push("wet dreams");
-										State.variables.RESSevent.push("wet dreams");
-										State.variables.RESSevent.push("wet dreams");
-										State.variables.RESSevent.push("wet dreams");
-										State.variables.RESSevent.push("wet dreams");
-										State.variables.RESSevent.push("wet dreams");
-										State.variables.RESSevent.push("wet dreams");
-										State.variables.RESSevent.push("wet dreams");
-										State.variables.RESSevent.push("wet dreams");
+									if (eventSlave.physicalAge + eventSlave.birthWeek / 52 >= eventSlave.pubertyAgeXY - 0.5) {
+										State.variables.RESSevent.push(...Array.from({length: 10}, () => "wet dreams"));
 									}
 								}
 							}
diff --git a/src/js/generateMarketSlave.js b/src/js/generateMarketSlave.js
index 19bb229f68e329c4a3205dbb8d3e43140317ec07..aa24346754e6ac5c90090e9f7cb56a263ddc9b92 100644
--- a/src/js/generateMarketSlave.js
+++ b/src/js/generateMarketSlave.js
@@ -1344,7 +1344,7 @@ globalThis.generateMarketSlave = function(market = "kidnappers", numArcology = 1
 			if (slave.vagina > -1) {
 				slave.preg = jsEither([-2, -1, -1, -1, -1, -1, -1, -1, 1, 1]);
 				if (slave.physicalAge < slave.pubertyAgeXX) {
-					slave.preg = -1;
+					slave.preg = 0;
 				}
 				if (slave.preg > 0) {
 					slave.pregType = setPregType(slave);
diff --git a/src/js/slaveGenerationJS.js b/src/js/slaveGenerationJS.js
index c724790fe76adb713cb7c4590cfea0e3686f73dd..59d8bff58ad784a0716ef853b06c3bbbc5441b01 100644
--- a/src/js/slaveGenerationJS.js
+++ b/src/js/slaveGenerationJS.js
@@ -1540,6 +1540,9 @@ globalThis.generatePuberty = function(slave) {
 	if ((slave.ovaries === 1 || slave.mpreg === 1) && slave.physicalAge >= slave.pubertyAgeXX) {
 		slave.pubertyXX = 1;
 	} else {
+		if (slave.preg >= -1) {
+			slave.preg = 0;
+		}
 		slave.pubertyXX = 0;
 	}
 	if (slave.balls > 0 && slave.ballType !== "sterile" && slave.physicalAge >= slave.pubertyAgeXY) {
diff --git a/src/uncategorized/seCoursing.tw b/src/uncategorized/seCoursing.tw
index 0882f6f08546a2f9aa2eac9c3f63e112131310f7..10aab1e74e25294cda3a196e1cd6e212bada920b 100644
--- a/src/uncategorized/seCoursing.tw
+++ b/src/uncategorized/seCoursing.tw
@@ -105,7 +105,9 @@ You lead your lurcher _activeLurcher.slaveName out on a leash, naked just like t
 	<<set $activeSlave.anus = 1>>
 	<<set $activeSlave.vagina = 0>>
 	<<set $activeSlave.counter.anal += 1, $analTotal += 1>>
-	<<set $activeSlave.preg = -1>>
+	<<if $activeSlave.pubertyXX > 0>>
+		<<set $activeSlave.preg = -1>>
+	<</if>>
 	<<set $activeSlave.ovaries = 1>>
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
@@ -162,7 +164,9 @@ You lead your lurcher _activeLurcher.slaveName out on a leash, naked just like t
 	<<set $activeSlave.anus = 1>>
 	<<set $activeSlave.vagina = 1>>
 	<<set $activeSlave.counter.anal += 1, $analTotal += 1>>
-	<<set $activeSlave.preg = -1>>
+	<<if $activeSlave.pubertyXX > 0>>
+		<<set $activeSlave.preg = -1>>
+	<</if>>
 	<<set $activeSlave.ovaries = 1>>
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 15>>