diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js
index 733c022ed7be826d845990f1ba1192a32c253861..008de40707c9a17c1ce3767313ba500eb88df3c5 100644
--- a/src/endWeek/saWhore.js
+++ b/src/endWeek/saWhore.js
@@ -133,6 +133,13 @@ window.saWhore = (function saWhore() {
 			if ((V.universalRulesFacilityWork === 1 && slave.assignment === "whore" && V.brothelSpots > 0) || (slave.assignment === "work in the brothel")) {
 				if (slave.assignment === "whore") {
 					r += ` Since there's extra space in ${V.brothelName}, ${he} sells ${himself} there.`;
+					const maxBrothelBoost = Math.max(Math.trunc(100 * Math.pow(1.26, V.brothelBoost.eligable - 1)) * 50 * V.brothelBoost.eligable, 1); // Correcting prices in case benefits outgrow the cap
+					if (maxBrothelBoost < V.slaveJobValues.brothel.boost) {
+						FuckResult = Math.trunc(FuckResult * (1 + V.brothelBoost.eligable / 20) * maxBrothelBoost / V.slaveJobValues.brothel.boost);
+					} else {
+						FuckResult = Math.trunc(FuckResult * (1 + V.brothelBoost.eligable / 20));
+					}
+					
 				}
 				// ads
 				if (V.brothelAdsSpending !== 0) {
@@ -1294,20 +1301,7 @@ window.saWhore = (function saWhore() {
 	 * @param {App.Entity.SlaveState} slave
 	 */
 	function addCash(slave) {
-		let whoreScore = slave.sexAmount * slave.sexQuality; // The standard amount of money the whore is expected to make in a week
-		if (slave.effectiveWhoreClass === 4) {
-			cash = Math.trunc(whoreScore * V.whorePriceAdjustment.topClass); // final price adjustment for supply and demand
-			slave.sexQuality = Math.trunc(slave.sexQuality); // rounding it after we're done with it
-		} else if (slave.effectiveWhoreClass === 3) {
-			cash = Math.trunc(whoreScore * V.whorePriceAdjustment.upperClass);
-			slave.sexQuality = Math.trunc(slave.sexQuality);
-		} else if (slave.effectiveWhoreClass === 2) {
-			cash = Math.trunc(whoreScore * V.whorePriceAdjustment.middleClass);
-			slave.sexQuality = Math.trunc(slave.sexQuality);
-		} else {
-			cash = Math.trunc(whoreScore * V.whorePriceAdjustment.lowerClass);
-			slave.sexQuality = Math.trunc(slave.sexQuality);
-		}
+		cash = slave.sexAmount * FuckResult; // The standard amount of money the whore is expected to make in a week
 		if (slave.assignment === window.Job.WHORE) {
 			cashX(cash, "slaveAssignmentWhore", slave);
 		} else if (slave.assignment === window.Job.MADAM) {
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index bffc783d00f9c77d5e6ce42228de726c19204986..633796f47d79c9a3af0086591d8522015d04d7bb 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -1976,8 +1976,14 @@ window.slaveJobValues = function(lowerClassSexDemandRef, middleClassSexDemandRef
 			const lowerClubSupply = slaveJobValues.club * slaveJobValues.clubSP * (lowerClassSexDemandRef / (lowerClassSexDemandRef + middleClassSexDemandRef));
 			const lowerSupply = slaveJobValues.brothel.lowerClass + lowerClubSupply;
 			const lowerSDRatio = lowerSupply / (lowerClassSexDemandRef - V.NPCSexSupply.lowerClass);
-			const demandBoost = 1 + V.brothelBoost.eligable / 50;
-			const priceBoost = 1 + V.brothelBoost.eligable / 20;
+			let demandBoost = 1;
+			let priceBoost = 1;
+			
+			if (toTheBrothel === 1 || s.assignment === "work in the brothel") {
+				demandBoost += V.brothelBoost.eligable / 50;
+				priceBoost += V.brothelBoost.eligable / 20;
+			}
+
 			if (s.effectiveWhoreClass === 4 && topSDRatio > 1 && topSDRatio > upperSDRatio) {
 				s.effectiveWhoreClass -= 1;
 			}
@@ -2019,6 +2025,7 @@ window.slaveJobValues = function(lowerClassSexDemandRef, middleClassSexDemandRef
 					sexBudget = Math.trunc(sexBudget * 1.1);
 				}
 			}
+
 			s.sexAmount = Math.round(sexMin * demandBoost);
 			tiredFucks(s); // adding tiredness based on number of fucks and then adjusting income in case the tiredness penalty changed as a result.
 			if (healthPenalty(s) < initialHealthPenalty) {
@@ -2026,27 +2033,30 @@ window.slaveJobValues = function(lowerClassSexDemandRef, middleClassSexDemandRef
 			}
 
 			s.sexQuality = Math.trunc((income * demandBoost * priceBoost) / s.sexAmount);
-			slaveJobValues.brothel.boost += Math.max(Math.trunc(s.sexQuality * s.sexAmount / demandBoost) - Math.trunc(income), 0); // Keeping track of additional benefits from boosting the brothel on the price side and not the amount side.
+			const incomeBoostCorrected = Math.trunc(s.sexAmount * s.sexQuality / priceBoost);
+			if ((toTheBrothel === 1 || s.assignment === "work in the brothel") && V.brothelBoost.eligable > 0) {
+				slaveJobValues.brothel.boost += Math.max(Math.trunc(s.sexAmount * s.sexQuality / demandBoost) - Math.trunc(income), 0); // Keeping track of additional benefits from boosting the brothel on the price side and not the amount side.
+			}
 
 			switch (s.effectiveWhoreClass) {
 				case 1:
-					slaveJobValues.brothel.lowerClass += s.sexAmount * s.sexQuality;
+					slaveJobValues.brothel.lowerClass += incomeBoostCorrected; // Registering the job value in the right slot
 					break;
 				case 2:
-					slaveJobValues.brothel.middleClass += s.sexAmount * s.sexQuality; // Registering the job value in the right slot
+					slaveJobValues.brothel.middleClass += incomeBoostCorrected;
 					break;
 				case 3:
-					slaveJobValues.brothel.upperClass += s.sexAmount * s.sexQuality;
+					slaveJobValues.brothel.upperClass += incomeBoostCorrected;
 					break;
 				case 4:
-					slaveJobValues.brothel.topClass += s.sexAmount * s.sexQuality;
+					slaveJobValues.brothel.topClass += incomeBoostCorrected;
 					break;
 				default:
-					slaveJobValues.brothel.lowerClass += s.sexAmount * s.sexQuality;
+					slaveJobValues.brothel.lowerClass += incomeBoostCorrected;
 			}
 		}
 
-		whoreScore(s, lowerClassSexDemandRef, middleClassSexDemandRef, upperClassSexDemandRef, topClassSexDemandRef);
+		whoreScore(s, lowerClassSexDemandRef, middleClassSexDemandRef, upperClassSexDemandRef, topClassSexDemandRef, toTheBrothel);
 
 		if (s.assignment === "be the Madam") {
 			if ((BL + toTheBrothelTotal > 0) && (BL + toTheBrothelTotal < 10)) {
diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/uncategorized/slaveAssignmentsReport.tw
index d6994eed91087c3e836b6cbfbd0bec47e51c27f3..d0374933238cc3a7a5cbf929b833d06cd3ad32e0 100644
--- a/src/uncategorized/slaveAssignmentsReport.tw
+++ b/src/uncategorized/slaveAssignmentsReport.tw
@@ -28,7 +28,7 @@
 Depending on the conditions they may derive more or less 'utility' out of their credits spent
 i.e. a highly paternalist arcology with little choice for its lower class but Fuckdolls may still put money into them but not get the same satisfaction out of it*/
 /*Low rent increases demand/available money for sexual services, high rent decreases it*/
-<<if $rep < $brothelBoost.selected * 500 + 2000>>
+<<if $brothelBoost.selected > 0 && $rep < $brothelBoost.selected * 500 + 2000>>
 	<<set $brothelBoost.eligable = Math.trunc((rep - 2000) / 500)>>
 	<<if $brothelBoost.eligable < 0>>
 		<<set $brothelBoost.eligable = 0>>
@@ -37,6 +37,7 @@ i.e. a highly paternalist arcology with little choice for its lower class but Fu
 	<<set $brothelBoost.eligable = $brothelBoost.selected>>
 <</if>>
 <<run repX(forceNeg(50 * $brothelBoost.eligable), "brothel")>>
+
 <<set _lowerClassSexDemand = Math.trunc($lowerClass * $whoreBudget.lowerClass) * 2,
 _lowerClassSexDemandRef = Math.max(_lowerClassSexDemand, 1),
 _visitorsSexDemand = Math.trunc($visitors) * 40,
@@ -48,14 +49,11 @@ _topClassSexDemand = Math.trunc($topClass * $whoreBudget.topClass) * 2,
 _topClassSexDemandRef = Math.max(_topClassSexDemand, 1),
 _arcadeSupply = {lowerClass: 0, middleClass: 0, upperClass: 0},
 _clubSupply = {lowerClass: 0, middleClass: 0},
-_brothelBoostDemand = {lowerClass: Math.trunc(_lowerClassSexDemandRef * $brothelBoost.eligable / 50), middleClass: Math.trunc(_middleClassSexDemandRef * $brothelBoost.eligable / 50), upperClass: Math.trunc(_upperClassSexDemandRef * $brothelBoost.eligable / 50), topClass: Math.trunc(_topClassSexDemandRef * $brothelBoost.eligable / 50)},
-_maxBrothelBoost = Math.trunc(100 * Math.pow(1.26, $brothelBoost.eligable - 1)) * 50 * $brothelBoost.eligable,
 $whorePriceAdjustment = {lowerClass: 0, middleClass: 0, upperClass: 0, topClass: 0},
 $NPCMarketShare = {lowerClass: 0, middleClass: 0, upperClass: 0, topClass: 0},
 $sexDemandResult = {lowerClass: 0, middleClass: 0, upperClass: 0, topClass: 0},
-$slaveJobValues = slaveJobValues(_lowerClassSexDemandRef + _brothelBoostDemand.lowerClass, _middleClassSexDemandRef + _brothelBoostDemand.middleClass, _upperClassSexDemandRef + _brothelBoostDemand.upperClass, _topClassSexDemandRef + _brothelBoostDemand.topClass)>>
+$slaveJobValues = slaveJobValues(_lowerClassSexDemandRef, _middleClassSexDemandRef, _upperClassSexDemandRef, _topClassSexDemandRef)>>
 
-<<print _brothelBoostDemand.lowerClass>>
 /*Arcade Specific Demand for Degradationists to give it higher priority*/
 <<if $arcologies[0].FSDegradationist != "unset">>
 	<<set _lowerClassArcadeSexDemand = Math.trunc(_lowerClassSexDemand * $arcologies[0].FSDegradationist * 0.0015),
@@ -117,40 +115,34 @@ _middleClassClubRatio = _middleClassSexDemand / _clubDemand>>
 <<set _clubSupply.lowerClass = Math.trunc($slaveJobValues.club * $slaveJobValues.clubSP * _lowerClassClubRatio),
 _clubSupply.middleClass = Math.trunc($slaveJobValues.club * $slaveJobValues.clubSP * _middleClassClubRatio)>>
 
-values: <<print $slaveJobValues.brothel.lowerClass>> | <<print $slaveJobValues.brothel.middleClass>> | <<print $slaveJobValues.brothel.boost>> | <<print $slaveJobValues.club>> 
-/*Brothel or street whore sex supply*/
-<<if $slaveJobValues.brothel.boost > _maxBrothelBoost>>
-	<<set _boostPriceAdjustment = _maxBrothelBoost / $slaveJobValues.brothel.boost>>
-<<else>>
-	<<set _boostPriceAdjustment = 1>>
-<</if>>
+/* Brothel or street whore sex supply */
+boost: <<print $slaveJobValues.brothel.boost>>
 <<if _lowerClassSexDemand < $slaveJobValues.brothel.lowerClass>>
-	/*_brothelBoostDemand gets included in the price calculation to counteract the additional use of whores lowering the price unintentionally. The boost is supposed to improve profits, suppressing them again here would not be great. The boost is not included in the demand calculations, those remain as is. The boost demand isn't 'real' demand for sex, it is demand for favours from the PC bought through the brothel*/
-	<<set $whorePriceAdjustment.lowerClass = Math.max(Math.pow(_lowerClassSexDemand + _brothelBoostDemand.lowerClass / ($slaveJobValues.brothel.lowerClass + $NPCSexSupply.lowerClass), 1.513) * _boostPriceAdjustment, 0.3),
+	<<set $whorePriceAdjustment.lowerClass = Math.max(Math.pow(_lowerClassSexDemand / ($slaveJobValues.brothel.lowerClass + $NPCSexSupply.lowerClass), 1.513), 0.3),
 	_lowerClassSexDemand = 0>> /*This accounts for people having too much choice and getting more picky how they spend their money*/
 <<else>>
-	<<set $whorePriceAdjustment.lowerClass = Math.pow(_lowerClassSexDemand + _brothelBoostDemand.lowerClass / ($slaveJobValues.brothel.lowerClass + $NPCSexSupply.lowerClass), 0.5) * _boostPriceAdjustment,
+	<<set $whorePriceAdjustment.lowerClass = Math.pow(_lowerClassSexDemand / ($slaveJobValues.brothel.lowerClass + $NPCSexSupply.lowerClass), 0.5),
 	_lowerClassSexDemand -= $slaveJobValues.brothel.lowerClass>> /* People are willing to pay more for a scarce good, but within reason */
 <</if>>
 <<if _middleClassSexDemand < $slaveJobValues.brothel.middleClass>>
-	<<set $whorePriceAdjustment.middleClass = Math.max(Math.pow(((_middleClassSexDemand + _brothelBoostDemand.middleClass) * 1.1) / ($slaveJobValues.brothel.middleClass + $NPCSexSupply.middleClass), 1.513) * _boostPriceAdjustment, 0.33),
+	<<set $whorePriceAdjustment.middleClass = Math.max(Math.pow((_middleClassSexDemand * 1.1) / ($slaveJobValues.brothel.middleClass + $NPCSexSupply.middleClass), 1.513), 0.33),
 	_middleClassSexDemand = 0>>
 <<else>>
-	<<set $whorePriceAdjustment.middleClass = Math.pow(((_middleClassSexDemand + _brothelBoostDemand.middleClass) * 1.1) / ($slaveJobValues.brothel.middleClass + $NPCSexSupply.middleClass), 0.5) * _boostPriceAdjustment,
+	<<set $whorePriceAdjustment.middleClass = Math.pow((_middleClassSexDemand * 1.1) / ($slaveJobValues.brothel.middleClass + $NPCSexSupply.middleClass), 0.5),
 	_middleClassSexDemand -= $slaveJobValues.brothel.middleClass>>
 <</if>>
 <<if _upperClassSexDemand < $slaveJobValues.brothel.upperClass>>
-	<<set $whorePriceAdjustment.upperClass = Math.max(Math.pow(((_upperClassSexDemand + _brothelBoostDemand.upperClass) * 1.21) / ($slaveJobValues.brothel.upperClass + $NPCSexSupply.upperClass), 1.513) * _boostPriceAdjustment, 0.363),
+	<<set $whorePriceAdjustment.upperClass = Math.max(Math.pow((_upperClassSexDemand * 1.21) / ($slaveJobValues.brothel.upperClass + $NPCSexSupply.upperClass), 1.513), 0.363),
 	_upperClassSexDemand = 0>>
 <<else>>
-	<<set $whorePriceAdjustment.upperClass = Math.pow(((_upperClassSexDemand + _brothelBoostDemand.upperClass) * 1.21) / ($slaveJobValues.brothel.upperClass + $NPCSexSupply.upperClass), 0.5) * _boostPriceAdjustment,
+	<<set $whorePriceAdjustment.upperClass = Math.pow((_upperClassSexDemand * 1.21) / ($slaveJobValues.brothel.upperClass + $NPCSexSupply.upperClass), 0.5),
 	_upperClassSexDemand -= $slaveJobValues.brothel.upperClass>>
 <</if>>
 <<if _topClassSexDemand < $slaveJobValues.brothel.topClass>>
-	<<set $whorePriceAdjustment.topClass = Math.max(Math.pow(((_topClassSexDemand + _brothelBoostDemand.topClass) * 1.331) / ($slaveJobValues.brothel.topClass + $NPCSexSupply.topClass), 1.513) * _boostPriceAdjustment, 0.3993),
+	<<set $whorePriceAdjustment.topClass = Math.max(Math.pow((_topClassSexDemand * 1.331) / ($slaveJobValues.brothel.topClass + $NPCSexSupply.topClass), 1.513), 0.3993),
 	_topClassSexDemand = 0>>
 <<else>>
-	<<set $whorePriceAdjustment.topClass = Math.pow(((_topClassSexDemand + _brothelBoostDemand.topClass) * 1.331) / ($slaveJobValues.brothel.topClass + $NPCSexSupply.topClass), 0.5) * _boostPriceAdjustment,
+	<<set $whorePriceAdjustment.topClass = Math.pow((_topClassSexDemand * 1.331) / ($slaveJobValues.brothel.topClass + $NPCSexSupply.topClass), 0.5),
 	_topClassSexDemand -= $slaveJobValues.brothel.topClass>>
 <</if>>