diff --git a/player variables documentation - Pregmod.txt b/player variables documentation - Pregmod.txt
index e838f56558a9774e4a59bd8a70b09108dcb478ab..fabe9f727c8c985d3639b5176b95d59e88b1715d 100644
--- a/player variables documentation - Pregmod.txt	
+++ b/player variables documentation - Pregmod.txt	
@@ -68,6 +68,20 @@ Do you know you are pregnant (currently unused due to lack of menstrual cycle)
 0 - no
 1 - yes
 
+fertKnown: 
+
+Menstrual cycle known variable. To be used for fert cycle discover and things like pregnancy without a first period
+
+0 - no
+1 - yes
+
+fertPeak:
+
+Menstrual cycle control variable.
+
+ 0 - Danger week
+1+ - safe week
+
 belly:
 
 (uncommon in events)
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index 366d8c51ed5f264502422aae033d07b20cd1406d..732c71b7286f3a3cde8cef9b0a551fb045d38761 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -1878,6 +1878,20 @@ readyOva:
 
 Number of ready to be impregnated ova (override normal cases), default - 0. For delayed impregnations with multiples. Used onetime on next call of the SetPregType widget. After SetPregType use it to override .pregType, it set back to 0 automatically.
 
+fertKnown: 
+
+Menstrual cycle known variable. To be used for fert cycle discover and things like pregnancy without a first period
+
+0 - no
+1 - yes
+
+fertPeak:
+
+Menstrual cycle control variable.
+
+ 0 - Danger week
+1+ - safe week
+
 ovaImplant:
 
 Ovary implant type.
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 23b8176725df44325b5676247a5e487bc3033900..a748912f7715a48a29d38e779453dafe8f5f927c 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -846,6 +846,20 @@ App.Entity.SlaveState = class SlaveState {
 		 * * "restraint": Provides structural support for extremely oversized pregnancies
 		 */
 		this.wombImplant = "none";
+		/**
+		 * Menstrual cycle known variable. To be used for fert cycle discover and things like pregnancy without a first period
+		 *
+		 * * 0: no
+		 * * 1: yes
+		 */
+		this.fertKnown = 0;
+		/**
+		 * Menstrual cycle control variable.
+		 *
+		 * * 0: Danger week
+		 * * 1+: safe week
+		 */
+		this.fertPeak = 0;
 		/**
 		 * has the slave been turned into a broodmother
 		 *
diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js
index ccd173225e9d7b22d595ab3d48a8282b2e8abf76..adc8935d0cff87fb6651c7dd72d58bda6f3a9eb2 100644
--- a/src/js/datatypeCleanupJS.js
+++ b/src/js/datatypeCleanupJS.js
@@ -289,6 +289,7 @@ window.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		if (typeof slave.ovaImplant !== "string") {
 			slave.ovaImplant = 0;
 		}
+		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;
 		slave.broodmotherOnHold = Math.clamp(+slave.broodmotherOnHold, 0, 1) || 0;
@@ -898,6 +899,7 @@ window.childPregnancyDatatypeCleanup = function childPregnancyDatatypeCleanup(ch
 	if (typeof child.pregControl !== "string") {
 		child.pregControl = "none";
 	}
+	child.fertPeak = Math.clamp(+child.fertPeak, 0, 4) || 0;
 	WombNormalizePreg(child);
 };
 
@@ -1252,6 +1254,7 @@ window.PCDatatypeCleanup = function PCDatatypeCleanup() {
 	}
 	PC.vagina = Math.clamp(+PC.vagina, 0, 1) || 0;
 	PC.belly = Math.max(+PC.belly, 0) || 0;
+	PC.fertPeak = Math.clamp(+PC.fertPeak, 0, 4) || 0;
 	PC.pregMood = Math.clamp(+PC.pregMood, 0, 2) || 0;
 	PC.labor = Math.clamp(+PC.labor, 0, 1) || 0;
 	PC.births = Math.max(+PC.births, 0) || 0;
diff --git a/src/pregmod/widgets/bodyswapWidgets.tw b/src/pregmod/widgets/bodyswapWidgets.tw
index 76f8142e4ef631d9e3e4b8a5b27f50c14c2d04b7..68d1bb07d0f9ad7e9501ae5c5f6d7a560d978a5b 100644
--- a/src/pregmod/widgets/bodyswapWidgets.tw
+++ b/src/pregmod/widgets/bodyswapWidgets.tw
@@ -100,6 +100,8 @@
 <<set $args[0].preg = $args[1].preg>>
 <<set $args[0].pregSource = $args[1].pregSource>>
 <<set $args[0].pregType = $args[1].pregType>>
+<<set $args[0].fertKnown = $args[1].fertKnown>>
+<<set $args[0].fertPeak = $args[1].fertPeak>>
 <<set $args[0].broodmother = $args[1].broodmother>>
 <<set $args[0].broodmotherFetuses = $args[1].broodmotherFetuses>>
 <<set $args[0].broodmotherOnHold = $args[1].broodmotherOnHold>>
diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index 115c3a5bd955d4a05da0811618a38b0cd5debd87..70895ea1ffebbea4afe9b3eac1416e7b42df91a4 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -1,7 +1,7 @@
 :: pregmod widgets [nobr widget]
 
 <<widget "initPC">>
-	<<set $PC = {name: "Anonymous", surname: 0, title: 1, ID: -1, genes: "XY", pronoun: "he", possessive: "him", object: "his", dick: 1, vagina: 0, preg: 0, pregType: 0, pregWeek: 0, pregKnown: 0, belly: 0, bellyPreg: 0, mpreg: 0, pregSource: 0, pregMood: 0, labor: 0, births: 0, boobsBonus: 0, degeneracy: 0, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, lactation: 0, lactationDuration: 0, career: "capitalist", rumor: "wealth", birthWeek: random(0,51), age: 2, sexualEnergy: 4, refreshment: "cigar", refreshmentType: 0, trading: 0, warfare: 0, slaving: 0, engineering: 0, medicine: 0, hacking: 0, cumTap: 0, race: "white", origRace: "white", skin: "white", origSkin: "white", markings: "none", eyeColor: "blue", origEye: "blue", pupil: "circular", sclerae: "white", hColor: "blonde", origHColor: "blonde", nationality: "Stateless", father: 0, mother: 0, sisters: 0, daughters: 0, birthElite: 0, birthMaster: 0, birthDegenerate: 0, birthClient: 0, birthOther: 0, birthArcOwner: 0, birthCitizen: 0, birthSelf: 0, birthLab: 0, birthFutaSis: 0, slavesFathered: 0, slavesKnockedUp: 0, intelligence: 100, face: 100, faceShape: "normal", actualAge: 35, physicalAge: 35, visualAge: 35, boobsImplant: 0, butt: 0, buttImplant: 0, balls: 0, ballsImplant: 0, ageImplant: 0, newVag: 0, reservedChildren: 0, reservedChildrenNursery: 0, fertDrugs: 0, forcedFertDrugs: 0, staminaPills: 0, ovaryAge: 35, eggType: "human", ballType: "human", storedCum: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", fetish: "none", pubicHStyle: "hairless", underArmHStyle: "hairless", geneticQuirks: {macromastia: 0, gigantomastia: 0, fertility: 0, hyperFertility: 0, superfetation: 0, gigantism: 0, dwarfism: 0, pFace: 0, uFace: 0, albinism: 0, heterochromia: 0, rearLipedema: 0, wellHung: 0, wGain: 0, wLoss: 0, androgyny: 0, girlsOnly: 0}}>>
+	<<set $PC = {name: "Anonymous", surname: 0, title: 1, ID: -1, genes: "XY", pronoun: "he", possessive: "him", object: "his", dick: 1, vagina: 0, preg: 0, pregType: 0, pregWeek: 0, pregKnown: 0, fertKnown: 0, fertPeak: 0, belly: 0, bellyPreg: 0, mpreg: 0, pregSource: 0, pregMood: 0, labor: 0, births: 0, boobsBonus: 0, degeneracy: 0, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, lactation: 0, lactationDuration: 0, career: "capitalist", rumor: "wealth", birthWeek: random(0,51), age: 2, sexualEnergy: 4, refreshment: "cigar", refreshmentType: 0, trading: 0, warfare: 0, slaving: 0, engineering: 0, medicine: 0, hacking: 0, cumTap: 0, race: "white", origRace: "white", skin: "white", origSkin: "white", markings: "none", eyeColor: "blue", origEye: "blue", pupil: "circular", sclerae: "white", hColor: "blonde", origHColor: "blonde", nationality: "Stateless", father: 0, mother: 0, sisters: 0, daughters: 0, birthElite: 0, birthMaster: 0, birthDegenerate: 0, birthClient: 0, birthOther: 0, birthArcOwner: 0, birthCitizen: 0, birthSelf: 0, birthLab: 0, birthFutaSis: 0, slavesFathered: 0, slavesKnockedUp: 0, intelligence: 100, face: 100, faceShape: "normal", actualAge: 35, physicalAge: 35, visualAge: 35, boobsImplant: 0, butt: 0, buttImplant: 0, balls: 0, ballsImplant: 0, ageImplant: 0, newVag: 0, reservedChildren: 0, reservedChildrenNursery: 0, fertDrugs: 0, forcedFertDrugs: 0, staminaPills: 0, ovaryAge: 35, eggType: "human", ballType: "human", storedCum: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", fetish: "none", pubicHStyle: "hairless", underArmHStyle: "hairless", geneticQuirks: {macromastia: 0, gigantomastia: 0, fertility: 0, hyperFertility: 0, superfetation: 0, gigantism: 0, dwarfism: 0, pFace: 0, uFace: 0, albinism: 0, heterochromia: 0, rearLipedema: 0, wellHung: 0, wGain: 0, wLoss: 0, androgyny: 0, girlsOnly: 0}}>>
 
 	<<set WombInit($PC)>>
 
@@ -107,8 +107,10 @@
 <<if ndef $args[0].pubertyXX>>
 	<<if $args[0].physicalAge >= $args[0].pubertyAgeXX>>
 		<<set $args[0].pubertyXX = 1>>
+		<<set $args[0].fertKnown = 1>>
 	<<else>>
 		<<set $args[0].pubertyXX = 0>>
+		<<set $args[0].fertKnown = 0>>
 	<</if>>
 <</if>>
 <<if ndef $args[0].pubertyAgeXY>>