diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index 9ad4bc488c5fc5bce9d7a0ee364a5bc79338cc38..04528982f38151595ce1f3ad95ba56b080b2d8a5 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -4,6 +4,9 @@
 
 8/10/2018
 
+	27
+	-critical fix to missing parents in childgen (now only done once instead for each child)
+
 	26
 	-skin color tweaking
 	-fixes
diff --git a/src/pregmod/csec.tw b/src/pregmod/csec.tw
index 842e09dfd5001dded6a30a4ef50f7a3bb7c8233d..0347c6aedcdba6698b307e120f37990b4b5c2236 100644
--- a/src/pregmod/csec.tw
+++ b/src/pregmod/csec.tw
@@ -114,7 +114,11 @@ Performing a cesarean section is trivial for the remote surgery to carry out. $a
 		<<set _incubated = 1>>
 	<</if>>
 	<<set $mom = $activeSlave>>
-	<<set _identicalChildGen = 0, _shiftDegree = 0>>
+	<<set _identicalChildGen = 0, _shiftDegree = 0 && _cToIncub > 0>>
+	<<if $mom.pregSource < 1 && $mom.pregSource != -1>>
+		<<set $missingParent = $missingParentID>>
+		<<set $missingParentID-->>
+	<</if>>
 	<<for _cb = 0; _cb < _cToIncub; _cb++>> /* if there is no reserved children, code in loop will not trigger */
 			<<if _identicalChildGen == 0>>
 				<<if _cb == $mom.curBabies.length-1 && $mom.curBabies.length > 1 && $mom.curBabies[_cb].identical == 1>> /* catch for improperly placed identical twin flag to still generate*/
diff --git a/src/pregmod/generateChild.tw b/src/pregmod/generateChild.tw
index 333ac3521320f903b2d6705b7abc328688fd6569..f97226511c51d400f2fcbc553dde28ffa01aa909 100644
--- a/src/pregmod/generateChild.tw
+++ b/src/pregmod/generateChild.tw
@@ -29,8 +29,7 @@
 		<<set $activeSlave.slaveName = "Your daughter">>
 		<<set $activeSlave.mother = -1>>
 		<<if $PC.pregSource != -6>>
-			<<set $activeSlave.father = $missingParentID>>
-			<<set $missingParentID-->>
+			<<set $activeSlave.father = $missingParent>>
 			<<set $activeSlave.nationality = "Stateless">>
 		<<else>>
 			<<set $activeSlave.father = -1>>
@@ -160,8 +159,7 @@
 		<<set $activeSlave.slaveName = "Your son">>
 		<<set $activeSlave.mother = -1>>
 		<<if $PC.pregSource != -6>>
-			<<set $activeSlave.father = $missingParentID>>
-			<<set $missingParentID-->>
+			<<set $activeSlave.father = $missingParent>>
 			<<set $activeSlave.nationality = "Stateless">>
 		<<else>>
 			<<set $activeSlave.father = -1>>
@@ -302,8 +300,7 @@
 		<<set $activeSlave.slaveName = String($mom.slaveName + " and my child")>>
 		<<set $activeSlave.slaveSurname = $PC.surname>>
 	<<else>>
-		<<set $activeSlave.father = $missingParentID>>
-		<<set $missingParentID-->>
+		<<set $activeSlave.father = $missingParent>>
 		<<set $activeSlave.slaveName = String($mom.slaveName + "'s slut child")>>
 		<<if def $mom.slaveSurname && $mom.slaveSurname != "">><<set $activeSlave.slaveSurname = $mom.slaveSurname>><<else>><<set $activeSlave.slaveSurname = 0>><</if>>
 	<</if>>
diff --git a/src/pregmod/sePlayerBirth.tw b/src/pregmod/sePlayerBirth.tw
index 7f3f7f9a0cec1e312f179b02a5436961dbde76bb..c50ea37f684e8c04c658553618f408f463753862 100644
--- a/src/pregmod/sePlayerBirth.tw
+++ b/src/pregmod/sePlayerBirth.tw
@@ -404,6 +404,11 @@ You arrange yourself to give birth, relaxing until your body urges you to begin
 
 <<if _curBabies == 1>>
 
+	<<if $PC.pregSource < 1 && $PC.pregSource != -6 && $PC.reservedChildren > 0>>
+		<<set $missingParent = $missingParentID>>
+		<<set $missingParentID-->>
+	<</if>>
+
 	<<include "Generate Child">>
 
 	<<if $activeSlave.race == $PC.race>>
@@ -440,7 +445,11 @@ You arrange yourself to give birth, relaxing until your body urges you to begin
 	<</if>>
 
 <<elseif _curBabies > 1>>
-	<<set _identicalChildGen = 0, _shiftDegree = 0>>
+	<<set _identicalChildGen = 0, _shiftDegree = 0 && $PC.reservedChildren > 0>>
+	<<if $PC.pregSource < 1 && $PC.pregSource != -6>>
+		<<set $missingParent = $missingParentID>>
+		<<set $missingParentID-->>
+	<</if>>
 	<<for _p = 0; _p < _curBabies; _p++>>
 		<<if _identicalChildGen == 0>>
 			<<if _p == $PC.curBabies.length-1 && $PC.curBabies.length > 1 && $PC.curBabies[_p].identical == 1>> /* catch for improperly placed identical twin flag to still generate*/
diff --git a/src/pregmod/widgets/seBirthWidgets.tw b/src/pregmod/widgets/seBirthWidgets.tw
index c506be3ec8fbc588baf8c7e6637aa89e3bf8637f..b22a418b73393de9b820a831176aae745773c945 100644
--- a/src/pregmod/widgets/seBirthWidgets.tw
+++ b/src/pregmod/widgets/seBirthWidgets.tw
@@ -770,6 +770,10 @@ All in all,
 	<<set _identicalChildGen = 0, _shiftDegree = 0>>
 	<br><br>
 	Of $his _curBabies child<<if $slaves[$i].pregType > 1>>ren<</if>>; _cToIncub <<if $slaves[$i].reservedChildren > 1>>were<<else>>was<</if>> taken to $incubatorName.
+	<<if $slaves[$i].pregSource < 1 && $slaves[$i].pregSource != -1 && _cToIncub > 0>>
+		<<set $missingParent = $missingParentID>>
+		<<set $missingParentID-->>
+	<</if>>
 	<<for _k = 0; _k < _cToIncub; _k++>> 
 		<<if _identicalChildGen == 0>>
 			<<if _k == $slaves[$i].curBabies.length-1 && $slaves[$i].curBabies.length > 1 && $slaves[$i].curBabies[_k].identical == 1>> /* catch for improperly placed identical twin flag to still generate*/