diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index d617cb0e1fbe0c66469bdb009d622d2883e3e234..e3084dfc2a9c6d8e6f38b0117b02414b5325f19a 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -3686,6 +3686,12 @@ Is the Head Girl permitted to fuck this slave pregnant.
 0 - no
 1 - yes
 
+StudExclude:
+
+Is the Stud permitted to fuck this slave pregnant.
+0 - no
+1 - yes
+
 ballType:
 
 What species of sperm she produces.
diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js
index d4e1596aded6be35cf929f2bf1f039e74e37def4..23f385b558b4b9e1e1c8b3aa6348c89da6bf4d6c 100644
--- a/src/data/backwardsCompatibility/datatypeCleanup.js
+++ b/src/data/backwardsCompatibility/datatypeCleanup.js
@@ -1025,6 +1025,7 @@ window.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		}
 		slave.choosesOwnAssignment = Math.clamp(+slave.choosesOwnAssignment, 0) || 0;
 		slave.HGExclude = Math.clamp(+slave.HGExclude, 0, 1) || 0;
+		slave.StudExclude = Math.clamp(+slave.StudExclude, 0, 1) || 0;
 		slave.choosesOwnChastity = Math.clamp(+slave.choosesOwnChastity, 0, 1) || 0;
 		slave.breedingMark = Math.clamp(+slave.breedingMark, 0, 1) || 0;
 		slave.rudeTitle = Math.clamp(+slave.rudeTitle, 0, 1) || 0;
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 1eab103681b4b03b6d4f8705872a0edd9b23c135..bfe1313c4b6bacb7b2b37b4e0183ba0a7fc3145e 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -2307,6 +2307,12 @@ App.Entity.SlaveState = class SlaveState {
 		 * * 0: no
 		 * * 1: yes */
 		this.HGExclude = 0;
+		/** Is the Stud permitted to fuck this slave pregnant.
+		 *  MB Cattle Ranch bulls will ignore this.
+		 *
+		 * * 0: no
+		 * * 1: yes */
+		this.StudExclude = 0;
 		/**
 		 * What species of sperm she produces.
 		 * * "human"
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index 9abc93bfb5e3ec15a635e55383d12325ff02d903..b7343443524b5dc4274161422649bee5fc1124b1 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -4382,7 +4382,7 @@
 			<</if>> /* closes HG impregnation */
 		<<elseif ($Stud != 0) && ($slaves[$i].ID != $Stud.ID) && ($universalRulesImpregnation == "Stud")>>
 			<<setLocalPronouns $Stud 2>>
-			<<if ($slaves[$i].HGExclude == 1 || $slaves[$i].breedingMark == 1) && ($Stud.career != "a breeding bull" || $Stud.fetish != "mindbroken" || !canWalk($Stud))>>
+			<<if ($slaves[$i].StudExclude == 1 || $slaves[$i].breedingMark == 1) && ($Stud.career != "a breeding bull" || $Stud.fetish != "mindbroken" || !canWalk($Stud))>>
 				It's $Stud.slaveName's role to provide sperm for fertile slaves, but $slaves[$i].slaveName is not included on the list.
 			<<elseif $StudCum == 0>>
 				It's $Stud.slaveName's role to provide sperm for fertile slaves, but your Stud can only cum enough to ensure impregnation in a limited number of slaves each week.
@@ -4600,6 +4600,7 @@
 							<<if _studRandiness == 1>>
 								but has @@.mediumorchid;trouble coming to terms with@@ being @@.lime;inseminated@@ by a mate with no dick.
 								<<set $slaves[$i].need -= 10>>
+								<<set _studVaginal = 1>>
 							<<else>>
 								but between $his mate's lack of a dick and having to @@.lime;inseminate $himself@@ with a syringe, the experience @@.mediumorchid;is not very pleasant.@@
 							<</if>>
@@ -4609,6 +4610,7 @@
 								$slaves[$i].slaveName tries to resist _him2, so $Stud.slaveName teaches _him2 that _he2 doesn't need a dick @@.mediumorchid;to rape the poor $girl@@ pregnant. _He2 regularly ejaculating inside $him until @@.lime;conception@@ is confirmed, @@.gold;much to $his terror.@@
 								<<set $slaves[$i].devotion -= 4>>
 								<<set $slaves[$i].trust -= 4>>
+								<<set _studVaginal = 1>>
 							<<else>>
 								$slaves[$i].slaveName finds $Stud.slaveName is in a similar situation as $he is, so the two of them try to make it as @@.mediumaquamarine;mutuably enjoyable as possible,@@ despite the awkwardness involved, while trying their best to overlook that $Stud.slaveName is being forced to @@.lime;impregnate $him.@@
 								<<set $slaves[$i].trust += 4>>
@@ -4630,6 +4632,7 @@
 								<<if _studRandiness == 1>>
 									@@.hotpink;very willing to be bred@@ by your Stud, but never expected to be @@.lime;impregnated via tribbing.@@
 									<<set $slaves[$i].need -= 20>>
+									<<set _studVaginal = 1>>
 								<<else>>
 									@@.hotpink;happy to bear@@ your Stud's child by injecting _his2 cumshots deep into $his <<if $slaves[$i].mpreg == 1>>ass<</if>>pussy until $he @@.lime;conceives.@@
 								<</if>>
@@ -4640,6 +4643,7 @@
 								<<if _studRandiness == 1>>
 									allows _him2 to effectively @@.lime;trib $him pregnant.@@
 									<<set $slaves[$i].need -= 20>>
+									<<set _studVaginal = 1>>
 								<<else>>
 									<<if ($slaves[$i].fetish == "sadist" || $slaves[$i].fetish == "dom")>>
 										wastes no time dealing with _his2 issues and just harvests _his2 sperm
@@ -4655,6 +4659,7 @@
 								<<if _studRandiness == 1>>
 									but never expected to be @@.lime;impregnated via tribbing.@@
 									<<set $slaves[$i].need -= 20>>
+									<<set _studVaginal = 1>>
 								<<else>>
 									and injects milked cum into $his hungry <<if $slaves[$i].mpreg == 1>>ass<</if>>pussy daily until @@.lime;conception@@ is verified.
 								<</if>>
@@ -4665,6 +4670,7 @@
 								<<if _studRandiness == 1>>
 									and tribs with _him2 until _he2 squirts enough sperm into $him to @@.lime;conceive a child.@@
 									<<set $slaves[$i].need -= 20>>
+									<<set _studVaginal = 1>>
 								<<else>>
 									and dutifully injects $himself with _his2 loads until @@.lime;conception@@ is verified.
 								<</if>>
@@ -4756,20 +4762,27 @@
 								<<set $slaves[$i].need -= 30>>
 							<</if>>
 						<</if>>
+						<<set _studPenetrative = 1>>
+						<<set _studTakesV = 1>>
 					<<elseif canAchieveErection($Stud)>>
 						<<if $slaves[$i].career == "a dairy cow" && ($slaves[$i].devotion <= 20)>>
 							$slaves[$i].slaveName feels a need to be bred by your Stud, but try as $he might, just can't fit _his2 massive dick inside $his <<if $slaves[$i].mpreg == 1>>ass<</if>>pussy. Having to take just the tip until $he @@.lime;conceives@@ @@.mediumorchid;isn't satisfying@@ to the ex-dairy cow.
 							<<set $slaves[$i].devotion -= 1>>
+							<<set _studPenetrative = 1>>
+							<<set _studTakesV = 1>>
 						<<elseif ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
 							<<if _studRandiness == 1>>
 								$slaves[$i].slaveName tries to resist _him2, so $Stud.slaveName just @@.mediumorchid;rapes the poor $girl@@ pregnant, regularly ejaculating inside $him until @@.lime;conception@@ is confirmed.
 								<<set $slaves[$i].devotion -= 4>>
 								<<set _rapeAddsFlaw = 1>>
+								<<set _studPenetrative = 1>>
+								<<set _studTakesV = 1>>
 							<<else>>
 								$slaves[$i].slaveName finds $Stud.slaveName is in a similar situation as $he is, so the two of them try to make it as @@.mediumaquamarine;mutuably enjoyable as possible@@ while trying their best to overlook that $Stud.slaveName is being forced to @@.lime;impregnate $him.@@
 								<<set $slaves[$i].trust += 4>>
 								<<set $Stud.trust += 4>>
 								<<set $slaves[$i].need = 0>>
+								<<set _studPenetrative = 1>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
 							<<if _studRandiness == 1>>
@@ -4792,11 +4805,15 @@
 								<<set $slaves[$i].devotion += 2>>
 								<<set _satisfiedPregFetish = 1>>
 								<<set $slaves[$i].need = 0>>
+								<<set _studPenetrative = 1>>
+								<<set _studTakesV = 1>>
 							<<else>>
 								$slaves[$i].slaveName is willing to be bred by your Stud, and
 								<<if _studRandiness == 1>>
 									takes as much of _his2 cock bareback as $he can
 									<<set $slaves[$i].need -= 20>>
+									<<set _studPenetrative = 1>>
+									<<set _studTakesV = 1>>
 								<<else>>
 									<<if ($slaves[$i].fetish == "sadist" || $slaves[$i].fetish == "dom")>>
 										nearly hurts $himself trying to fit the monster in $his <<if $slaves[$i].mpreg == 1>>ass<<else>>pussy<</if>>, but manages to take spurts
@@ -4819,10 +4836,14 @@
 								<<set $slaves[$i].devotion += 2>>
 								<<set _satisfiedPregFetish = 1>>
 								<<set $slaves[$i].need = 0>>
+								<<set _studPenetrative = 1>>
+								<<set _studTakesV = 1>>
 							<<else>>
 								$slaves[$i].slaveName is @@.hotpink;quite willing to be bred@@ by your Stud and
 								<<if _studRandiness == 1>>
 									submissively takes the tip of _his2 cock
+									<<set _studPenetrative = 1>>
+									<<set _studTakesV = 1>>
 								<<else>>
 									<<if ($slaves[$i].fetish == "sadist" || $slaves[$i].fetish == "dom")>>
 										forcibly extracts cum from _his2 massive cock
@@ -4885,11 +4906,41 @@
 						<</if>>
 					<</if>>
 				<</if>>
-
-				<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = $Stud.ID, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1, $StudCum -= 1, $Stud.counter.penetrative += 10, $penetrativeTotal += 10>>
+				<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = $Stud.ID, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1, $StudCum -= 1>>
 				<<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 				<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, $Stud.ID, 1)>>
-				<<set $activeSlave = $slaves[$i]>><<if $slaves[$i].mpreg == 1>><<= VCheck.Anal(10)>><<else>><<= VCheck.Vaginal(10)>><</if>><<set $slaves[$i] = $activeSlave>>
+				<<if _studPenetrative>>
+					<<if _studTakesV = 1>> /* Stud may not actually take virginity */
+						<<set $Stud.counter.penetrative += 10>>
+						<<set $penetrativeTotal += 10>>
+						<<set $activeSlave = $slaves[$i]>>
+						<<if $slaves[$i].mpreg == 1>>
+							<<= VCheck.Anal(10)>>
+						<<else>>
+							<<= VCheck.Vaginal(10)>>
+						<</if>>
+						<<set $slaves[$i] = $activeSlave>>
+					<<else>>
+						<<if $slaves[$i].mpreg == 1>>
+							<<set $slaves[$i].counter.anal += 10>>
+							<<set $analTotal += 10>>
+						<<else>>
+							<<set $slaves[$i].counter.vaginal += 10>>
+							<<set $vaginalTotal += 10>>
+						<</if>>
+					<</if>>
+				<</if>>
+				<<if _studVaginal>>
+					<<set $Stud.counter.vaginal += 10>>
+					<<set $vaginalTotal += 10>>
+					<<if $slaves[$i].mpreg == 1>>
+						<<set $slaves[$i].counter.anal += 10>>
+						<<set $analTotal += 10>>
+					<<else>>
+						<<set $slaves[$i].counter.vaginal += 10>>
+						<<set $vaginalTotal += 10>>
+					<</if>>
+				<</if>>
 				<<set _saLTE = $slaveIndices[$Stud.ID]>>
 				<<if def _saLTE>>
 					<<set $slaves[_saLTE] = $Stud>>