diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index 0ef827374e4b6fd155dc035e64b9f84024b937d2..fe9c4d0b47f0e508801392be5745e8a7c6af94eb 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -3661,6 +3661,13 @@ geneMods:
 		0 - no
 		1 - yes
 
+weightDirection:
+
+erratic weight gain, used by (.geneticQuirks.wGain == 2 && .geneticQuirks.wLoss == 2)
+ 0 - stable
+ 1 - gaining weight
+-1 - losing weight
+
 slaveCost:
 
 Amount of cash paid to acquire the slave
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index b920ae803e62e057b227247edc2d4eaa60fa8ecb..7c8436416186b68c19944b84a76e1807547e6b48 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -2341,6 +2341,10 @@ App.Entity.SlaveState = class SlaveState {
 		this.override_Pubic_H_Color = 0;
 		this.override_Arm_H_Color = 0;
 		this.override_Brow_H_Color = 0;
+		/** erratic weight gain
+		*
+		* 0: stable; 1: gaining; -1: losing */
+		this.weightDirection = 0;
 		/** @type {{skin:string, eyeColor:string, hColor:string}} */
 		this.albinismOverride = null;
 		/* eslint-enable */
diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js
index 592d13bd7ebbbeb43f4890fd3fbd834dcd4de15f..91e142c4647e332aced608d7d39055751aafa064 100644
--- a/src/js/generateGenetics.js
+++ b/src/js/generateGenetics.js
@@ -1141,6 +1141,72 @@ window.generateGenetics = (function() {
 			}
 		}
 
+		// hyperleptinemia
+		if (father !== 0) {
+			if (mother.geneticQuirks.wGain === 2 && father.geneticQuirks.wGain === 2) {
+				if (jsRandom(1, 4) >= 3) {
+					quirks.wGain = 2;
+				} else {
+					quirks.wGain = 1;
+				}
+			} else if (mother.geneticQuirks.wGain === 1 + father.geneticQuirks.wGain >= 3) {
+				chance = jsRandom(1, 4);
+				if (chance <= 2) {
+					quirks.wGain = 2;
+				} else if (chance === 4) {
+					quirks.wGain = 1;
+				}
+			} else if (mother.geneticQuirks.wGain === 1 && father.geneticQuirks.wGain === 1) {
+				if (jsRandom(1, 4) === 1) {
+					quirks.wGain = 2;
+				} else if (chance === 4) {
+					quirks.wGain = 1;
+				}
+			}
+		} else if (mother.geneticQuirks.wGain >= 1) {
+			if (jsRandom(0, 40000) >= 37500) {
+				chance = jsRandom(1, 4);
+				if (chance <= 2) {
+					quirks.wGain = 1;
+				} else if (chance === 4) {
+					quirks.wGain = 2;
+				}
+			}
+		}
+		
+		// hypoleptinemia
+		if (father !== 0) {
+			if (mother.geneticQuirks.wLoss === 2 && father.geneticQuirks.wLoss === 2) {
+				if (jsRandom(1, 4) >= 3) {
+					quirks.wLoss = 2;
+				} else {
+					quirks.wLoss = 1;
+				}
+			} else if (mother.geneticQuirks.wLoss === 1 + father.geneticQuirks.wLoss >= 3) {
+				chance = jsRandom(1, 4);
+				if (chance <= 2) {
+					quirks.wLoss = 2;
+				} else if (chance === 4) {
+					quirks.wLoss = 1;
+				}
+			} else if (mother.geneticQuirks.wLoss === 1 && father.geneticQuirks.wLoss === 1) {
+				if (jsRandom(1, 4) === 1) {
+					quirks.wLoss = 2;
+				} else if (chance === 4) {
+					quirks.wLoss = 1;
+				}
+			}
+		} else if (mother.geneticQuirks.wLoss >= 1) {
+			if (jsRandom(0, 40000) >= 39000) {
+				chance = jsRandom(1, 4);
+				if (chance <= 2) {
+					quirks.wLoss = 1;
+				} else if (chance === 4) {
+					quirks.wLoss = 2;
+				}
+			}
+		}
+
 		return clone(quirks);
 	}
 
diff --git a/src/js/generateNewSlaveJS.js b/src/js/generateNewSlaveJS.js
index d03cd7790e2d6376277499913028f77de55f81f4..469eb6a68221cf519ea4d116848bbcdf13d61e03 100644
--- a/src/js/generateNewSlaveJS.js
+++ b/src/js/generateNewSlaveJS.js
@@ -1174,6 +1174,18 @@ window.GenerateNewSlave = (function() {
 		} else if (chance >= 18500) {
 			slave.geneticQuirks.mLoss = 1;
 		}
+		chance = jsRandom(1, 20000);
+		if (chance >= 19800) {
+			slave.geneticQuirks.wGain = 2;
+		} else if (chance >= 18500) {
+			slave.geneticQuirks.wGain = 1;
+		}
+		chance = jsRandom(1, 20000);
+		if (chance >= 19850) {
+			slave.geneticQuirks.wLoss = 2;
+		} else if (chance >= 18500) {
+			slave.geneticQuirks.wLoss = 1;
+		}
 	}
 
 	function generateXYGeneticQuirks() {
@@ -1240,6 +1252,18 @@ window.GenerateNewSlave = (function() {
 		} else if (chance >= 18500) {
 			slave.geneticQuirks.mLoss = 1;
 		}
+		chance = jsRandom(1, 20000);
+		if (chance >= 19900) {
+			slave.geneticQuirks.wGain = 2;
+		} else if (chance >= 18500) {
+			slave.geneticQuirks.wGain = 1;
+		}
+		chance = jsRandom(1, 20000);
+		if (chance >= 19950) {
+			slave.geneticQuirks.wLoss = 2;
+		} else if (chance >= 18500) {
+			slave.geneticQuirks.wLoss = 1;
+		}
 	}
 
 	function generateAge() {
@@ -1655,6 +1679,16 @@ window.GenerateNewSlave = (function() {
 			slave.muscles -= jsRandom(10, 50);
 			slave.muscles = Math.clamp(slave.muscles, -100, 100);
 		}
+		if (slave.geneticQuirks.wGain === 2) {
+			slave.weight += jsRandom(10, 50);
+			slave.weight = Math.clamp(slave.weight, -100, 200);
+			slave.weightDirection = 1;
+		}
+		if (slave.geneticQuirks.wLoss === 2) {
+			slave.weight -= jsRandom(10, 50);
+			slave.weight = Math.clamp(slave.muscles, -100, 200);
+			slave.weightDirection = -1;
+		}
 	}
 
 	return GenerateNewSlave;
diff --git a/src/pregmod/saInflation.tw b/src/pregmod/saInflation.tw
index 5458ec1d1eb45767ddb6901da4f0248ecfcdba59..0f14c7ba9aefba99fdba7cb6ab879553e66c6642 100644
--- a/src/pregmod/saInflation.tw
+++ b/src/pregmod/saInflation.tw
@@ -534,6 +534,9 @@
 	<<if $slaves[$i].weight < 200>>
 		$His body @@.lime;grows a little more padded@@ as it absorbs the milk contained in $his digestive track.
 		<<set $slaves[$i].weight += 2>>
+		<<if $slaves[$i].weightDirection == 1>>
+			<<set $slaves[$i].weight += 2>>
+		<</if>>
 	<</if>>
 	<<if random(1,100) > 50/_gigantomastiaMod && $slaves[$i].boobs < 3000*_gigantomastiaMod>>
 		$His breasts @@.lime;swell@@ with added fat as $he digests the milk contained in $his digestive track.
@@ -550,6 +553,9 @@
 	<<if $slaves[$i].weight < 200>>
 		$His body @@.lime;rapidly gains weight@@ as it digests the food contained in $his digestive track.
 		<<set $slaves[$i].weight += 4>>
+		<<if $slaves[$i].weightDirection == 1>>
+			<<set $slaves[$i].weight += 2>>
+		<</if>>
 	<</if>>
 	<<if random(1,100) > 50/_gigantomastiaMod && $slaves[$i].boobs < 3000*_gigantomastiaMod>>
 		$His breasts @@.lime;swell@@ with added fat as $he digests the food contained in $his digestive track.
diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index 0fdf823f8bee203ae98077912661ae981eeb77ad..d8b4299533839adc82e161b9378a12065613b3e1 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -149,6 +149,9 @@
 <<if ndef $args[0].lactationRules>>
 	<<set $args[0].lactationRules = "none">>
 <</if>>
+<<if ndef $args[0].weightDirection>>
+	<<set $args[0].weightDirection = 0>>
+<</if>>
 <<if $releaseID < 1036>>
 	<<for _pmw = 0; _pmw < $args[0].womb.length; _pmw++>>
 		<<if $args[0].womb[_pmw].genetics.mother !== $args[0].womb[_pmw].motherID || $args[0].womb[_pmw].genetics.father !== $args[0].womb[_pmw].fatherID>>
diff --git a/src/uncategorized/cellblockReport.tw b/src/uncategorized/cellblockReport.tw
index 7b2d59fa0ac8e0e6d071d2c055de68751836c5e4..314e720f293c14c699db74618757005f0ed55df3 100644
--- a/src/uncategorized/cellblockReport.tw
+++ b/src/uncategorized/cellblockReport.tw
@@ -194,7 +194,13 @@
 	<<case "Hedonistic">>
 		<<set $slaves[$i].livingRules = "spare">>
 		<<if $slaves[$i].weight < 200>>
-			<<set $slaves[$i].weight += 3>>
+			<<if $slaves[$i].weightDirection == 1>>
+				<<set $slaves[$i].weight += 5>>
+			<<elseif $slaves[$i].weightDirection == -1>>
+				<<set $slaves[$i].weight += 1>>
+			<<else>>
+				<<set $slaves[$i].weight += 3>>
+			<</if>>
 		<</if>>
 		<<if $slaves[$i].muscles > -100>>
 			<<set $slaves[$i].muscles -= 2>>
diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw
index 4220a4377bcaa695fae1760f1432a2cbd1f88086..913ebef4125afb98c149cb5d7ca3f245f3ee4d20 100644
--- a/src/uncategorized/dairyReport.tw
+++ b/src/uncategorized/dairyReport.tw
@@ -481,6 +481,9 @@
 			<</if>>
 		<<elseif $slaves[$i].diet == "fattening">>
 			<<set $slaves[$i].weight += 2>>
+			<<if $slaves[$i].weightDirection == 1>>
+				<<set $slaves[$i].weight += 2>>
+			<</if>>
 		<</if>>
 		<<if ($slaves[$i].health < 75)>>
 			<<set $slaves[$i].health += 25>>
diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw
index bda2940c2aa37bfa5fe0823f05a61073fc3ed916..440f80c79f882801491126fc8788d1929e66f340 100644
--- a/src/uncategorized/nextWeek.tw
+++ b/src/uncategorized/nextWeek.tw
@@ -194,6 +194,16 @@
 	<<if $slaves[_i].missingLegs == 3 && $slaves[_i].amp == 1>>
 		<<set $slaves[_i].heels = 0, $slaves[_i].shoes = "none", $slaves[_i].legAccessory = "none", $slaves[_i].legsTat = 0,  $slaves[_i].heightImplant = 0>>
 	<</if>>
+	/* irregular leptin production weight gain/loss setter */
+	<<if $slaves[_i].geneticQuirks.wGain == 2 && $slaves[_i].geneticQuirks.wLoss == 2>>
+		<<set $slaves[_i].weightDirection = either(-1, 1)>>
+	<<elseif $slaves[_i].geneticQuirks.wGain == 2>>
+		<<set $slaves[_i].weightDirection = 1>>
+	<<elseif $slaves[_i].geneticQuirks.wLoss == 2>>
+		<<set $slaves[_i].weightDirection = -1>>
+	<<else>>
+		<<set $slaves[_i].weightDirection = 0>>
+	<</if>>
 	/% Fix some possible floating point rounding errors, and bring precision to one decimal place. %/
 	<<run SlaveStatClamp($slaves[_i])>>
 	<<set $slaves[_i].energy = Math.clamp($slaves[_i].energy.toFixed(1), 0, 100)>>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 2911fa14e790f9c57bbfd4ccf96790eb1a7733bb..318e7dac8c43b8e39b31482dbc3167724bbcb414 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -1531,23 +1531,23 @@ $He has
 		<</if>>
 		<<if $activeSlave.geneticQuirks.wGain == 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Correct hyperleptinemia|Surgery Degradation][$activeSlave.geneticQuirks.wGain = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+			[[Correct hyperleptinemia|Surgery Degradation][$activeSlave.geneticQuirks.wGain = 0, $activeSlave.weightDirection = 0, cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
 		<<elseif $activeSlave.geneticQuirks.wGain == 1 && $geneticMappingUpgrade >= 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Hyperleptinemia activation treatment|Surgery Degradation][$activeSlave.geneticQuirks.wGain = 2,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+			[[Hyperleptinemia activation treatment|Surgery Degradation][$activeSlave.geneticQuirks.wGain = 2, $activeSlave.weightDirection = 1, cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
 		<<elseif $geneticFlawLibrary == 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Induced hyperleptinemia treatment|Surgery Degradation][$activeSlave.geneticQuirks.wGain = 2,cashX(forceNeg($surgeryCost*10), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 40,$surgeryType = "gene treatment"]] //This will induce @@.orange;hyperleptinemia@@ in $his genetic code//
+			[[Induced hyperleptinemia treatment|Surgery Degradation][$activeSlave.geneticQuirks.wGain = 2, $activeSlave.weightDirection = 1, cashX(forceNeg($surgeryCost*10), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 40,$surgeryType = "gene treatment"]] //This will induce @@.orange;hyperleptinemia@@ in $his genetic code//
 		<</if>>
 		<<if $activeSlave.geneticQuirks.wLoss == 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Correct hypoleptinemia|Surgery Degradation][$activeSlave.geneticQuirks.wLoss = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+			[[Correct hypoleptinemia|Surgery Degradation][$activeSlave.geneticQuirks.wLoss = 0, $activeSlave.weightDirection = 0, cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
 		<<elseif $activeSlave.geneticQuirks.wLoss == 1 && $geneticMappingUpgrade >= 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Hypoleptinemia activation treatment|Surgery Degradation][$activeSlave.geneticQuirks.wLoss = 2,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+			[[Hypoleptinemia activation treatment|Surgery Degradation][$activeSlave.geneticQuirks.wLoss = 2, $activeSlave.weightDirection = -1, cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
 		<<elseif $geneticFlawLibrary == 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Induced hypoleptinemia treatment|Surgery Degradation][$activeSlave.geneticQuirks.wLoss = 2,cashX(forceNeg($surgeryCost*10), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 40,$surgeryType = "gene treatment"]] //This will induce @@.orange;hypoleptinemia@@ in $his genetic code//
+			[[Induced hypoleptinemia treatment|Surgery Degradation][$activeSlave.geneticQuirks.wLoss = 2, $activeSlave.weightDirection = -1, cashX(forceNeg($surgeryCost*10), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 40,$surgeryType = "gene treatment"]] //This will induce @@.orange;hypoleptinemia@@ in $his genetic code//
 		<</if>>
 		<<if $activeSlave.geneticQuirks.mGain == 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
@@ -1559,7 +1559,6 @@ $He has
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			[[Induced myotonic hypertrophy treatment|Surgery Degradation][$activeSlave.geneticQuirks.mGain = 2,cashX(forceNeg($surgeryCost*10), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 40,$surgeryType = "gene treatment"]] //This will induce @@.orange;myotonic hypertrophy@@ in $his genetic code//
 		<</if>>
-		/*
 		<<if $activeSlave.geneticQuirks.mLoss == 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			[[Correct myotonic dystrophy|Surgery Degradation][$activeSlave.geneticQuirks.mLoss = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
@@ -1570,7 +1569,6 @@ $He has
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			[[Induced myotonic dystrophy treatment|Surgery Degradation][$activeSlave.geneticQuirks.mLoss = 2,cashX(forceNeg($surgeryCost*10), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 40,$surgeryType = "gene treatment"]] //This will induce @@.orange;myotonic dystrophy@@ in $his genetic code//
 		<</if>>
-		*/
 	<</if>>
 	<br><br>
 <</if>>
diff --git a/src/uncategorized/saDiet.tw b/src/uncategorized/saDiet.tw
index a9d011c1021e2e56dc784e4338831af685fdc9fb..06208b5284e30d05b58b0393fc9e94e4c5933107 100644
--- a/src/uncategorized/saDiet.tw
+++ b/src/uncategorized/saDiet.tw
@@ -117,7 +117,13 @@
 	<<elseif _weightLoss == 5>>
 		$He @@.lime;loses weight.@@
 	<</if>>
-	<<set $slaves[$i].weight -= _weightLoss+($feeder*2)>>
+	<<if $slaves[$i].weightDirection == -1>>
+		<<set $slaves[$i].weight -= (_weightLoss+3)+($feeder*2)>>
+	<<elseif $slaves[$i].weightDirection == 1>>
+		<<set $slaves[$i].weight -= (_weightLoss-3)+($feeder)>>
+	<<else>>
+		<<set $slaves[$i].weight -= _weightLoss+($feeder*2)>>
+	<</if>>
 	<<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200 && _gigantomastiaMod != 3>>
 		<<if (($slaves[$i].geneMods.NCS == 0) && (random(1,_assetLoss*_gigantomastiaMod) <= 1+$feeder))>>
 			@@.orange;$His breasts get a little smaller.@@
@@ -302,7 +308,13 @@
 		<<if ($slaves[$i].geneMods.NCS == 1)>>
 			<<set _assetGain = Math.trunc(_assetGain * 2)>>
 		<</if>>
-		<<set $slaves[$i].weight += _weightGain+($feeder*2)>>
+		<<if $slaves[$i].weightDirection == -1>>
+			<<set $slaves[$i].weight += Math.max((_weightGain-3)+($feeder), 1)>>
+		<<elseif $slaves[$i].weightDirection == 1>>
+			<<set $slaves[$i].weight += (_weightGain+3)+($feeder*2)>>
+		<<else>>
+			<<set $slaves[$i].weight += _weightGain+($feeder*2)>>
+		<</if>>
 		<<if random(1,_assetGain) <= 1+$feeder>>
 			@@.lime;$His breasts get a little bigger.@@
 			<<if ($slaves[$i].geneMods.NCS == 0)>>
@@ -319,6 +331,9 @@
 			$He is now quite fat, so $his diet @@.yellow;has defaulted to maintenance of this weight.@@
 			<<set $slaves[$i].diet = "healthy">>
 		<</if>>
+	<<elseif $slaves[$i].weightDirection == 1>>
+		$He gains a little weight this week despite $his dietary troubles.
+		<<set $slaves[$i].weight += 1>>
 	<<else>>
 		$He doesn't gain any weight this week.
 	<</if>>
@@ -401,9 +416,12 @@
 			$His workout successes have @@.green;improved $his health.@@
 			<<set $slaves[$i].health += 10>>
 		<</if>>
-		<<if $slaves[$i].weight > 10>>
+		<<if $slaves[$i].weight > 10 && $slaves[$i].weightDirection != 1>>
 			$His workouts have also @@.orange;burned off some excess fat.@@
 			<<set $slaves[$i].weight -= 2>>
+			<<if $slaves[$i].weightDirection == -1>>
+				<<set $slaves[$i].weight -= 2>>
+			<</if>>
 		<</if>>
 	<</if>>
 <<case "slimming">> /* Muscle Loss */
@@ -485,9 +503,12 @@
 			$His workout successes have @@.green;improved $his health.@@
 			<<set $slaves[$i].health += 10>>
 		<</if>>
-		<<if $slaves[$i].weight > 10>>
+		<<if $slaves[$i].weight > 10 && $slaves[$i].weightDirection != 1>>
 			$His workouts have also @@.orange;burned off some excess fat.@@
 			<<set $slaves[$i].weight -= 2>>
+			<<if $slaves[$i].weightDirection == -1>>
+				<<set $slaves[$i].weight -= 2>>
+			<</if>>
 		<</if>>
 	<<else>>
 		$His long workouts focus on cardio to keep $his body lithe.
@@ -518,9 +539,12 @@
 			$His workout successes have @@.green;improved $his health.@@
 			<<set $slaves[$i].health += 5>>
 		<</if>>
-		<<if $slaves[$i].weight > 10>>
+		<<if $slaves[$i].weight > 10 && $slaves[$i].weightDirection != 1>>
 			$His workouts have also @@.orange;burned off some excess fat.@@
 			<<set $slaves[$i].weight -= 2>>
+			<<if $slaves[$i].weightDirection == -1>>
+				<<set $slaves[$i].weight -= 2>>
+			<</if>>
 		<</if>>
 	<</if>>
 <<case "cum production">>
@@ -560,9 +584,12 @@
 			Despite some doubts lurking at the back of $his mind, your insistence that $he will be prettier if $he was more feminine @@.hotpink;lets $him enjoy@@ the estrogen rich food given to $him.
 			<<set $slaves[$i].devotion += 1>>
 		<</if>>
-		<<if $slaves[$i].weight < 30>>
+		<<if $slaves[$i].weight < 30 && $slaves[$i].weightDirection != -1>>
 			Hormonal changes encourage $his body to @@.lime;grow softer.@@
 			<<set $slaves[$i].weight += 1>>
+			<<if $slaves[$i].weightDirection == 1>>
+				<<set $slaves[$i].weight += 2>>
+			<</if>>
 		<</if>>
 		<<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 500*_gigantomastiaMod))>>
 			$His breasts @@.lime;grow slightly@@ from the estrogen.
@@ -599,9 +626,12 @@
 			Despite some doubts lurking at the back of $his mind, your insistence that $he will be prettier if $he was more fertile @@.hotpink;lets $him enjoy@@ the estrogen rich food given to $him.
 			<<set $slaves[$i].devotion += 1>>
 		<</if>>
-		<<if $slaves[$i].weight < 40>>
+		<<if $slaves[$i].weight < 40 && $slaves[$i].weightDirection != 1>>
 			Hormonal changes encourage $his body to @@.lime;grow softer.@@
 			<<set $slaves[$i].weight += 1>>
+			<<if $slaves[$i].weightDirection == 1>>
+				<<set $slaves[$i].weight += 2>>
+			<</if>>
 		<</if>>
 		<<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 600*_gigantomastiaMod))>>
 			$His breasts @@.lime;grow slightly@@ from the estrogen.
@@ -620,9 +650,12 @@
 			Despite some doubts lurking at the back of $his mind, your insistence that $he will be prettier if $he was more feminine @@.hotpink;lets $him enjoy@@ the estrogen rich food given to $him.
 			<<set $slaves[$i].devotion += 1>>
 		<</if>>
-		<<if $slaves[$i].weight < 20>>
+		<<if $slaves[$i].weight < 20 && $slaves[$i].weightDirection != 1>>
 			Hormonal changes encourage $his body to @@.lime;grow softer.@@
 			<<set $slaves[$i].weight += 1>>
+			<<if $slaves[$i].weightDirection == 1>>
+				<<set $slaves[$i].weight += 2>>
+			<</if>>
 		<</if>>
 		<<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 400*_gigantomastiaMod))>>
 			$His breasts @@.lime;grow slightly@@ from the estrogen.
@@ -758,9 +791,12 @@
 		Hormonal changes encourage $his body to @@.lime;gain muscle.@@
 		<<set $slaves[$i].muscles += 1>>
 	<</if>>
-	<<if $slaves[$i].weight < 50>>
+	<<if $slaves[$i].weight < 50 && $slaves[$i].weightDirection != -1>>
 		Hormonal changes encourage $his body to @@.lime;grow softer.@@
 		<<set $slaves[$i].weight += 1>>
+		<<if $slaves[$i].weightDirection == 1>>
+			<<set $slaves[$i].weight += 2>>
+		<</if>>
 	<</if>>
 		<<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 800*_gigantomastiaMod))>>
 		$His breasts @@.lime;grow slightly@@ to fit $his developing femininity.
@@ -884,6 +920,19 @@
 		<</if>>
 	<</if>>
 <</if>>
+<<if !["fattening", "restricted", "slimming"].includes($slaves[$i].diet)>>
+	<<if $slaves[$i].weightDirection == -1 && $slaves[$i].weight >= -95>>
+		<<if $geneticMappingUpgrade >= 1>>
+			$His body @@.lime;aggressively burns fat@@ due to $his <<if $slaves[$i].geneticQuirks.wGain == 2 && $slaves[$i].geneticQuirks.wLoss == 2>>irregular leptin production<<else>>hypoleptinemia<</if>>.
+		<</if>>
+		<<set $slaves[$i].weight -= 3>>
+	<<elseif $slaves[$i].weightDirection == 1 && $slaves[$i].weight < 195>>
+		<<if $geneticMappingUpgrade >= 1>>
+			$His body @@.lime;aggressively stores fat@@ due to $his <<if $slaves[$i].geneticQuirks.wGain == 2 && $slaves[$i].geneticQuirks.wLoss == 2>>irregular leptin production<<else>>hyperleptinemia<</if>>.
+		<</if>>
+		<<set $slaves[$i].weight += 3>>
+	<</if>>
+<</if>>
 
 <<if ($slaves[$i].dietCum > 0)>>
 	<<if $slaves[$i].fetish != "mindbroken">>
@@ -1029,7 +1078,13 @@
 <<switch $slaves[$i].diet>>
 <<case "restricted">> /* Weight Loss */
 	The ports in Fuckdoll suits allow total dietary control, and $he's barely aware $he's being @@.lime;slimmed down.@@
-	<<set $slaves[$i].weight -= 9>>
+	<<if $slaves[$i].weightDirection == -1>>
+		<<set $slaves[$i].weight -= 12>>
+	<<elseif $slaves[$i].weightDirection == 1>>
+		<<set $slaves[$i].weight -= 6>>
+	<<else>>
+		<<set $slaves[$i].weight -= 9>>
+	<</if>>
 	<<if random(1,2) <= 1>>
 		<<if random(1,2) <= 1 && _gigantomastiaMod != 3>>
 			@@.orange;$His breasts get a little smaller.@@
@@ -1054,7 +1109,13 @@
 	<</if>>
 <<case "fattening">> /* Weight Gain */
 	The ports in Fuckdoll suits allow total dietary control, and $he's barely aware $he's being @@.lime;fattened up.@@
-	<<set $slaves[$i].weight += 9>>
+	<<if $slaves[$i].weightDirection == 1>>
+		<<set $slaves[$i].weight += 12>>
+	<<elseif $slaves[$i].weightDirection == -1>>
+		<<set $slaves[$i].weight += 6>>
+	<<else>>
+		<<set $slaves[$i].weight += 9>>
+	<</if>>
 	<<if random(1,2) <= 1>>
 		@@.lime;$His breasts get a little bigger.@@
 		<<set $slaves[$i].boobs += 50>>
@@ -1092,9 +1153,12 @@
 			<<set $slaves[$i].butt -= 1>>
 		<</if>>
 	<</if>>
-	<<if $slaves[$i].weight > 10>>
+	<<if $slaves[$i].weight > 10 && $slaves[$i].weightDirection != 1>>
 		$His workouts have also @@.orange;burned off some excess fat.@@
 		<<set $slaves[$i].weight -= 2>>
+		<<if $slaves[$i].weightDirection == -1>>
+			<<set $slaves[$i].weight -= 2>>
+		<</if>>
 	<</if>>
 	The stress of forced exercise is trivial compared to everything else $he experiences, and $he's unaffected mentally.
 <<case "slimming">> /* Muscle Loss */
@@ -1122,9 +1186,12 @@
 			<<set $slaves[$i].butt -= 1>>
 		<</if>>
 	<</if>>
-	<<if $slaves[$i].weight > 10>>
+	<<if $slaves[$i].weight > 10 && $slaves[$i].weightDirection != 1>>
 		$His workouts have also @@.orange;burned off some excess fat.@@
 		<<set $slaves[$i].weight -= 2>>
+		<<if $slaves[$i].weightDirection == -1>>
+			<<set $slaves[$i].weight -= 2>>
+		<</if>>
 	<</if>>
 	The stress of forced exercise is trivial compared to everything else $he experiences, and $he's unaffected mentally.
 
@@ -1141,9 +1208,12 @@
 <<case "XX">> /* Female Hormones */
 	The ports in Fuckdoll suits allow total dietary control, and $he's barely aware $he's being @@.lime;feminized.@@
 	<<if ($slaves[$i].ovaries == 1 || $slaves[$i].mpreg == 1) && ($slaves[$i].balls > 0)>> /* herm */
-		<<if $slaves[$i].weight < 30>>
+		<<if $slaves[$i].weight < 30 && $slaves[$i].weightDirection != -1>>
 			Hormonal changes encourage $his body to @@.lime;grow softer.@@
 			<<set $slaves[$i].weight += 1>>
+			<<if $slaves[$i].weightDirection == 1>>
+				<<set $slaves[$i].weight += 2>>
+			<</if>>
 		<</if>>
 		<<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 500*_gigantomastiaMod))>>
 			$His breasts @@.lime;grow slightly@@ from the estrogen.
@@ -1166,9 +1236,12 @@
 			<<set $slaves[$i].balls -= 1>>
 		<</if>>
 	<<elseif $slaves[$i].ovaries == 1 || $slaves[$i].mpreg == 1>> /* female */
-		<<if $slaves[$i].weight < 40>>
+		<<if $slaves[$i].weight < 40 && $slaves[$i].weightDirection != -1>>
 			Hormonal changes encourage $his body to @@.lime;grow softer.@@
 			<<set $slaves[$i].weight += 1>>
+			<<if $slaves[$i].weightDirection == 1>>
+				<<set $slaves[$i].weight += 2>>
+			<</if>>
 		<</if>>
 		<<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 600*_gigantomastiaMod))>>
 			$His breasts @@.lime;grow slightly@@ from the estrogen.
@@ -1183,9 +1256,12 @@
 			<<set $slaves[$i].butt += 1>>
 		<</if>>
 	<<elseif $slaves[$i].balls > 0>> /* male */
-		<<if $slaves[$i].weight < 20>>
+		<<if $slaves[$i].weight < 20 && $slaves[$i].weightDirection != -1>>
 			Hormonal changes encourage $his body to @@.lime;grow softer.@@
 			<<set $slaves[$i].weight += 1>>
+			<<if $slaves[$i].weightDirection == 1>>
+				<<set $slaves[$i].weight += 2>>
+			<</if>>
 		<</if>>
 		<<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 600*_gigantomastiaMod))>>
 			$His breasts @@.lime;grow slightly@@ from the estrogen.
@@ -1272,9 +1348,12 @@
 		Hormonal changes encourage $his body to @@.lime;gain muscle.@@
 	<<set $slaves[$i].muscles += 1+$slaves[$i].geneticQuirks.mGain>>
 	<</if>>
-	<<if $slaves[$i].weight < 50>>
+	<<if $slaves[$i].weight < 50 && $slaves[$i].weightDirection != -1>>
 		Hormonal changes encourage $his body to @@.lime;grow softer.@@
-	<<set $slaves[$i].weight += 1>>
+		<<set $slaves[$i].weight += 1>>
+		<<if $slaves[$i].weightDirection == 1>>
+			<<set $slaves[$i].weight += 2>>
+		<</if>>
 	<</if>>
 	<<if $slaves[$i].waist < 0>>
 		Hormonal changes @@.orange;thicken $his waist.@@
@@ -1340,5 +1419,18 @@
 		<</if>>
 	<</if>>
 <</if>>
+<<if !["fattening", "restricted", "slimming"].includes($slaves[$i].diet)>>
+	<<if $slaves[$i].weightDirection == -1 && $slaves[$i].weight >= -95>>
+		<<if $geneticMappingUpgrade >= 1>>
+			$His body @@.lime;aggressively burns fat@@ due to $his <<if $slaves[$i].geneticQuirks.wGain == 2 && $slaves[$i].geneticQuirks.wLoss == 2>>irregular leptin production<<else>>hypoleptinemia<</if>>.
+		<</if>>
+		<<set $slaves[$i].weight -= 3>>
+	<<elseif $slaves[$i].weightDirection == 1 && $slaves[$i].weight < 195>>
+		<<if $geneticMappingUpgrade >= 1>>
+			$His body @@.lime;aggressively stores fat@@ due to $his <<if $slaves[$i].geneticQuirks.wGain == 2 && $slaves[$i].geneticQuirks.wLoss == 2>>irregular leptin production<<else>>hyperleptinemia<</if>>.
+		<</if>>
+		<<set $slaves[$i].weight += 3>>
+	<</if>>
+<</if>>
 
 <</if>> /* CLOSES FUCKDOLL CHECK */