diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index 40cbc9e320f33fde57c77d2bd414971bc6a72a5b..0a961c6e2c795278665da1a6499559c08f5c360c 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -629,6 +629,7 @@ App.Data.resetOnNGPlus = {
 	spaSpots: 0,
 	spaUpgrade: 0,
 	spaFix: 0,
+	spaAggroSpermBan: 1,
 	spaName: "the Spa",
 
 	incubator: {capacity: 0, tanks: []},
diff --git a/src/endWeek/reports/spaReport.js b/src/endWeek/reports/spaReport.js
index 289e11cfc4189669957bcf5da1ce8dcb46fabd48..2053769e0cde89a2d5ac062e58b0b7983f247b1c 100644
--- a/src/endWeek/reports/spaReport.js
+++ b/src/endWeek/reports/spaReport.js
@@ -294,7 +294,7 @@ App.EndWeek.spaReport = function() {
 		App.Events.addNode(el, r, "p", ["indent", "bold"]);
 	}
 
-	if (App.EndWeek.saVars.poolJizzers.length > 0) {
+	if (App.EndWeek.saVars.poolJizz > ((S.Attendant && canSee(S.Attendant)) ? 5000 : 1000)) {
 		r.push(`The filters${S.Attendant ? ` and ${S.Attendant.slaveName}` : ""} have been overwhelmed by the sheer quantity of resilient sperm swimming around in the pool.`);
 		if (V.seePreg) {
 			 r.push(`Any woman that enters these fertile waters is liable to be gifted with new life.`);
@@ -305,7 +305,7 @@ App.EndWeek.spaReport = function() {
 	if (S.Attendant) {
 		const slave = App.SlaveAssignment.reportSlave(S.Attendant);
 		tired(slave);
-		if (isFertile(slave) && slave.preg !== -1 && App.EndWeek.saVars.poolJizz > 5000) { // Free swimming sperm do not respect chastity.
+		if (isFertile(slave) && slave.preg !== -1 && App.EndWeek.saVars.poolJizz > (canSee(S.Attendant) ? 5000 : 1000)) {) { // Free swimming sperm do not respect chastity and the Attendant can not avoid going in the pool.
 			const spermAtt = weightedRandom(App.EndWeek.saVars.poolJizzers);
 			if (canBreed(slave, getSlave(spermAtt.ID))) {
 				knockMeUp(slave, 25, 2, spermAtt.ID);
@@ -341,11 +341,19 @@ App.EndWeek.spaReport = function() {
 			slave.devotion++;
 			slave.trust++;
 		} else if (slave.trust < 40) {
-			slave.trust += 10;
+			if (slave.geneMods.aggressiveSperm === 1 && isVirile(slave) && S.Attendant && V.spaAggroSpermBan === 1) {
+				slave.trust += 5;
+			} else {
+				slave.trust += 10;
+			}
 		} else if (slave.devotion < 40) {
-			slave.devotion += 10;
+			if (slave.geneMods.aggressiveSperm === 1 && isVirile(slave) && S.Attendant && V.spaAggroSpermBan === 1) {
+				slave.devotion += 5;
+			} else {
+				slave.devotion += 10;
+			}
 		}
-		if (App.EndWeek.saVars.poolJizz > (S.Attendant ? 5000 : 1000)) {
+		if (App.EndWeek.saVars.poolJizz > ((S.Attendant && canSee(S.Attendant)) ? 5000 : 1000) && (V.spaAggroSpermBan === 0 || slave.breedingMark === 0)) { // 0 breeds all, 1 doesn't reach here, and 2 fails if .breedingMark is 0.
 			if (slave.fetish === "cumslut" && (canSee(slave) || canTaste(slave) || canSmell(slave))) {
 				slave.devotion++;
 			}
@@ -420,6 +428,11 @@ App.EndWeek.spaReport = function() {
 				r.push(`${He} remains in the Spa, stubborn in ${his} flaw.`);
 			} else if (slave.trust < 60 || slave.devotion < 60) {
 				r.push(`${He} remains in the Spa, as ${he} is still learning to accept life as a slave.`);
+				if (slave.geneMods.aggressiveSperm === 1 && isVirile(slave) && S.Attendant && V.spaAggroSpermBan === 1) {
+					if (slave.devotion < 40 || slave.trust < 40) {
+						r.push(`${He} wishes ${S.Attendant.slaveName} would allow ${him} to enjoy the main pool.`);
+					}
+				}
 			} else if (slave.health.condition < 20) {
 				r.push(`${He} remains in the Spa, as ${he} is benefiting from its healing properties.`);
 			} else if (slave.health.tired > 30) {
diff --git a/src/endWeek/saRewardAndPunishment.js b/src/endWeek/saRewardAndPunishment.js
index 7169faaa8c9b52dd19fca012543cfd9db71491e6..57bdef76992255e1f7c6a298db6b7232e8dc8b4e 100644
--- a/src/endWeek/saRewardAndPunishment.js
+++ b/src/endWeek/saRewardAndPunishment.js
@@ -77,7 +77,7 @@ App.SlaveAssignment.rewardAndPunishment = function rewardAndPunish(forSlave) {
 						r.push(`usually spends in bed with you, helping to ease your worries.`);
 					} else if (V.spa !== 0) {
 						r.push(`usually sets aside to spend with you in ${V.spaName}.`);
-						if (App.EndWeek.saVars.poolJizz > (S.Attendant ? 5000 : 1000)) {
+						if (App.EndWeek.saVars.poolJizz > ((S.Attendant && canSee(S.Attendant)) ? 5000 : 1000)) {
 							if (V.PC.intelligence + V.PC.intelligenceImplant < 10 || !canSee(V.PC)) { // Free swimming sperm do not respect chastity.
 								let sperm;
 								if (isFertile(slave) && slave.preg !== -1) {
@@ -98,10 +98,10 @@ App.SlaveAssignment.rewardAndPunishment = function rewardAndPunish(forSlave) {
 						r.push(`usually spends relaxing with you.`);
 					}
 				} else if (V.spa !== 0) {
-					const where = (slave.assignment !== Job.SPA) ? V.spaName : `a private bath`;
+					const where = (slave.assignment !== Job.SPA || slave.breedingMark) ? V.spaName : `a private bath`;
 					const attendant = S.Attendant ? `, enjoying ${S.Attendant.slaveName}'s care` : ``;
 					r.push(`usually spends in ${where}${attendant}.`);
-					if (slave.assignment !== Job.SPA && App.EndWeek.saVars.poolJizz > (S.Attendant ? 5000 : 1000)) {
+					if (slave.assignment !== Job.SPA && slave.breedingMark === 0 && App.EndWeek.saVars.poolJizz > ((S.Attendant && canSee(S.Attendant)) ? 5000 : 1000)) {
 						if (slave.fetish === "cumslut" && (canSee(slave) || canTaste(slave) || canSmell(slave))) {
 							r.push(`As an added bonus, ${he} gets to soak in a pool teeming with live sperm; <span class="hotpink">what luck!</span>`);
 							slave.devotion++;
diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js
index d8f5edb7670e7e62abb4740a231d637d00401dad..4d600af77eb4a62215b4a516e89540b49fc1425d 100644
--- a/src/endWeek/slaveAssignmentReport.js
+++ b/src/endWeek/slaveAssignmentReport.js
@@ -166,7 +166,7 @@ App.EndWeek.slaveAssignmentReport = function() {
 	if (facilities.spa.established) {
 		let cum;
 		for (const slave of App.Utils.sortedEmployees(App.Entity.facilities.spa)) {
-			if (slave.geneMods.aggressiveSperm === 1 && isVirile(slave) && (slave.rules.release.masturbation || App.Utils.hasNonassignmentSex(slave) || slave.rules.release.facilityLeader) && slave.energy > 20) {
+			if (slave.geneMods.aggressiveSperm === 1 && isVirile(slave) && (slave.rules.release.masturbation || App.Utils.hasNonassignmentSex(slave) || slave.rules.release.facilityLeader) && slave.energy > 20 && (!S.Attendant || V.spaAggroSpermBan !== 1)) {
 				cum = Math.trunc(cumAmount(slave) / 2);
 				App.EndWeek.saVars.poolJizz += cum;
 				App.EndWeek.saVars.poolJizzers.push({ID: slave.ID, weight: cum});
diff --git a/src/facilities/spa/spa.js b/src/facilities/spa/spa.js
index f96267172171444d1cee72bcc8be3bbf987d0b6c..3c40411229fbc31f802dec5cced939e0dc8f84df 100644
--- a/src/facilities/spa/spa.js
+++ b/src/facilities/spa/spa.js
@@ -155,6 +155,45 @@ App.Facilities.Spa.spa = class Spa extends App.Facilities.Facility {
 					},
 				],
 			},
+			{
+				property: "spaAggroSpermBan",
+				prereqs: [
+					!!S.Attendant,
+					optimizedSpermFormula,
+				],
+				options: [
+					{
+						get text() {
+							const {he} = getPronouns(S.Attendant);
+
+							return `${S.Attendant.slaveName} is to allow all slaves into the main pool, regardless of genetic modifications.`;
+						},
+						link: `Free reign`,
+						value: 0,
+					},
+					{
+						get text() {
+							const {his} = getPronouns(S.Attendant);
+
+							return `${S.Attendant.slaveName} has banned any slaves with the enhanced sperm treatment from entering the main pool ${V.seePreg ? "and causing random pregnancies" : "and clogging up the filters"}.`;
+						},
+						link: `No optimized sperm`,
+						value: 1,
+					},
+					{
+						get text() {
+							const {his} = getPronouns(S.Attendant);
+
+							return `${S.Attendant.slaveName} will make sure that no enhanced sperm will ever reach your breeding harem.`;
+						},
+						link: `Protect your harem`,
+						value: 2,
+						prereqs: [
+							V.propOutcome === 1,
+						],
+					},
+				],
+			},
 		];
 	}
 };