diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index 4a63b87d398f085f7fef1c8ea00ca525677dfac1..1ae2bcda956771ff6727d49ba5e177672ad16b02 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -1425,21 +1425,23 @@ window.FResult = (function() {
 	 * @param {App.Entity.SlaveState} slave
 	 * @returns {number}
 	 */
-	function FResult(slave) {
+	function FResult(slave, forSale = 0) {
 		V = State.variables;
 		incestBonus = V.arcologies[0].FSEgyptianRevivalist > 20 || V.arcologies[0].FSEgyptianRevivalistIncestPolicy === 1;
 
-		calcUseWeights(slave);
+		calcUseWeights(slave,forSale);
 		if (!slave.fuckdoll) {
-			calcNotFuckdoll(slave);
+			calcNotFuckdoll(slave,forSale);
 		} else {
 			result += slave.fuckdoll / 10;
 		}
 
-		result += Math.max(0, slave.aphrodisiacs) * 2;
-
-		if (slave.inflationType === "aphrodisiac") {
-			result += slave.inflation * 4;
+		if (!forSale) {
+			result += Math.max(0, slave.aphrodisiacs) * 2;
+			
+			if (slave.inflationType === "aphrodisiac") {
+				result += slave.inflation * 4;
+			}
 		}
 
 		if (slave.lactation > 0) {
@@ -1453,11 +1455,6 @@ window.FResult = (function() {
 		if (V.seeAge === 1) {
 			calcAge(slave);
 		}
-		if (slave.fetish === "mindbroken") {
-			result = Math.trunc(result * 0.4);
-		} else {
-			result = Math.trunc(result * 0.7);
-		}
 
 		if (slave.pregWeek < 0) {
 			result += Math.trunc(result * slave.pregWeek / 10);
@@ -1468,6 +1465,13 @@ window.FResult = (function() {
 		if (V.arcologies[0].FSHedonisticDecadence > 20) {
 			calcHedonismWeight(slave);
 		}
+		
+		if (slave.fetish === "mindbroken") {
+			result = Math.trunc(result * 0.4);
+		} else {
+			result = Math.trunc(result * 0.7);
+		}
+		
 		if (result < 2) {
 			if (supremeRaceP(slave) && V.arcologies[0].FSSupremacist > 20) {
 				result = 0;
@@ -1475,14 +1479,15 @@ window.FResult = (function() {
 				result = 2;
 			}
 		}
+		
 		return result;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
 	 */
-	function calcUseWeights(slave) {
-		result = (3 - slave.anus) + (slave.muscles / 30);
+	function calcUseWeights(slave,forSale=0) {
+		result = (slave.muscles / 30);
 		if (slave.muscles < -95) {
 			result -= 5;
 		} else if (slave.muscles < -30) {
@@ -1498,17 +1503,18 @@ window.FResult = (function() {
 		if (slave.sexualFlaw === "cum addict") {
 			result += (V.oralUseWeight / uses) * (slave.skill.oral / 30);
 		}
-		if (canDoVaginal(slave)) {
+		if (canDoVaginal(slave) || (slave.vagina > -1 && forSale)) {
 			result += 6 * (V.vaginalUseWeight / uses) * (slave.skill.vaginal / 30);
 			result += (3 - slave.vagina);
 			result += slave.vaginaLube;
 		}
-		if (canDoAnal(slave)) {
+		if (canDoAnal(slave) || forSale) {
 			result += 6 * (V.analUseWeight / uses) * (slave.skill.anal / 30);
+			result += (3 - slave.anus);
 			if (slave.sexualFlaw === "anal addict") {
 				result += (V.analUseWeight / uses) * (slave.skill.anal / 30);
 			}
-			if (slave.inflationType === "aphrodisiac") {
+			if (slave.inflationType === "aphrodisiac" && !forSale) {
 				result += (V.analUseWeight / uses) * (slave.inflation * 3);
 			}
 		}
@@ -1620,7 +1626,7 @@ window.FResult = (function() {
 				result += 0;
 			}
 		}
-		if (V.arcologies[0].FSRepopulationFocusMilfPolicy === 1 || V.arcologies[0].FSRepopulationFocus > 20) {
+		if ((V.arcologies[0].FSRepopulationFocusMilfPolicy === 1 || V.arcologies[0].FSRepopulationFocus > 20) && slave.counter.birthsTotal > 0) {
 			result += 1;
 		}
 	}
@@ -1701,9 +1707,7 @@ window.FResult = (function() {
 			if (slave.eyewear !== "corrective glasses" && slave.eyewear !== "corrective contacts") {
 				result -= 1;
 			}
-		} else if (slave.eyewear === "blurring glasses") {
-			result -= 1;
-		} else if (slave.eyewear === "blurring contacts") {
+		} else if (slave.eyewear === "blurring glasses" || slave.eyewear === "blurring contacts") {
 			result -= 1;
 		}
 	}
@@ -1753,7 +1757,7 @@ window.FResult = (function() {
 	 * @param {App.Entity.SlaveState} slave
 	 */
 	function calcMatureBonus(slave) {
-		if (slave.visualAge >= 30 && slave.actualAge >= 30 && slave.physicalAge < slave.visualAge) {
+		if (slave.visualAge >= 30 && slave.actualAge >= 30 && slave.physicalAge > slave.visualAge) {
 			result += Math.min((slave.physicalAge - slave.visualAge) * 2, 20);
 		} // looks and acts mature, but has a body that just won't quit
 	}
@@ -1761,25 +1765,32 @@ window.FResult = (function() {
 	/**
 	 * @param {App.Entity.SlaveState} slave
 	 */
-	function calcNotFuckdoll(slave) {
-		if (V.familyTesting === 1 && totalRelatives(slave) > 0) {
-			calcWorksWithRelatives(slave);
-		} else if (!V.familyTesting && slave.relation !== 0) {
-			calcWorksWithRelativesVanilla(slave);
-		}
-		if (slave.relationship > 0) {
-			calcWorksWithRelationship(slave);
-		}
-		if (slave.rivalry !== 0) {
-			calcWorksWithRival(slave);
+	function calcNotFuckdoll(slave,forSale=0) {
+		if (!forSale) {
+			if (V.familyTesting === 1 && totalRelatives(slave) > 0) {
+				calcWorksWithRelatives(slave);
+			} else if (!V.familyTesting && slave.relation !== 0) {
+				calcWorksWithRelativesVanilla(slave);
+			}
+			if (slave.relationship > 0) {
+				calcWorksWithRelationship(slave);
+			}
+			if (slave.rivalry !== 0) {
+				calcWorksWithRival(slave);
+			}
+			calcHInjectionsDiet(slave);
 		}
-		calcHInjectionsDiet(slave);
 		calcPreg(slave);
 		calcRace(slave);
 		calcSexAttributes(slave);
 		calcCareer(slave);
-		calcSight(slave);
-		calcHearing(slave);
+		if (!forSale) {
+			calcSight(slave);
+			calcHearing(slave);
+		} else {
+			result += slave.hears;
+			result += Math.clamp(slave.eyes*2 + 1,-3,0);
+		}
 		if (V.arcologies[0].FSEgyptianRevivalist !== "unset") {
 			calcEgyptianBonus(slave);
 		}
@@ -1865,7 +1876,7 @@ window.slaveCost = (function() {
 		V = State.variables;
 		arcology = V.arcologies[0];
 		multiplier = V.slaveCostFactor;
-		cost = Beauty(slave) * FResult(slave);
+		cost = Beauty(slave) * FResult(slave,1);
 
 		calcGenitalsCost(slave);
 		calcDevotionTrustCost(slave);
@@ -1893,9 +1904,13 @@ window.slaveCost = (function() {
 	 * @param {App.Entity.SlaveState} slave
 	 */
 	function calcGenitalsCost(slave) {
-		if (slave.vagina === 0) {
-			multiplier += 0.1;
+		if (slave.vagina === 0 && slave.counter.vaginal === 0) {
+			multiplier += 0.2;
+		}
+		if (slave.anus === 0 && slave.counter.anal === 0) {
+			multiplier += 0.2;
 		}
+		//Boosted these to 20% to account for the fact that it limits the skill that can be attained
 		if (slave.vagina > -1 && arcology.FSRestartSMR === 1) {
 			if (slave.dick > 0) {
 				if (slave.ovaries === 0 && slave.balls === 0) {
@@ -2101,21 +2116,21 @@ window.slaveCost = (function() {
 	function calcAgeCost(slave) {
 		if (slave.physicalAge === V.minimumSlaveAge && slave.physicalAge === V.fertilityAge && canGetPregnant(slave) && (arcology.FSRepopulationFocus !== "unset" || arcology.FSGenderFundamentalist !== "unset")) {
 			if (slave.birthWeek === 0) {
-				multiplier -= 0.4;
+				multiplier += 0.4;
 			} else if (slave.birthWeek < 4) {
-				multiplier -= 0.1;
+				multiplier += 0.1;
 			}
 		} else if (slave.physicalAge === V.minimumSlaveAge) {
 			if (slave.birthWeek === 0) {
-				multiplier -= 0.2;
+				multiplier += 0.2;
 			} else if (slave.birthWeek < 4) {
-				multiplier -= 0.05;
+				multiplier += 0.05;
 			}
 		} else if (slave.physicalAge === V.fertilityAge && canGetPregnant(slave) && (arcology.FSRepopulationFocus !== "unset" || arcology.FSGenderFundamentalist !== "unset")) {
 			if (slave.birthWeek === 0) {
-				multiplier -= 0.2;
+				multiplier += 0.2;
 			} else if (slave.birthWeek < 4) {
-				multiplier -= 0.05;
+				multiplier += 0.05;
 			}
 		}
 	}