diff --git a/src/cheats/mod_EditArcologyCheatDatatypeCleanup.tw b/src/cheats/mod_EditArcologyCheatDatatypeCleanup.tw
index d8672281baf768c3328b07618c45008abfa6d3c6..e7f467557ae39e99184858fb6eabc95ad5f84676 100644
--- a/src/cheats/mod_EditArcologyCheatDatatypeCleanup.tw
+++ b/src/cheats/mod_EditArcologyCheatDatatypeCleanup.tw
@@ -13,7 +13,7 @@
 <</if>>
 <<unset $customEvalCode>>
 
-<<run ArcologyDatatypeCleanup()>>
+<<run App.Update.playerArcologyDatatypeCleanup()>>
 <<run App.Update.playerFSDatatypeCleanup()>>
 
 The chanting grows louder and louder, CHEAT! CHEAT! CHEAT!
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index 023126557c32c79028d046077ffe457fac66cb7c..0e3ff1d2dbc88f4947ab88e1b326f610c537d80e 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -1295,10 +1295,20 @@ App.Update.globalVariables = function(node) {
 		if (typeof V.sexSupplyBarriersLC !== "undefined") {
 			V.sexSupplyBarriers.lowerClass = V.sexSupplyBarriersLC;
 		}
+
+		// Food
 		V.food = Math.max(+V.food, 0) || 12500;
+		V.foodCost = Math.trunc(2500 / V.localEcon);
 		if (V.foodConsumption === 0) {
 			V.foodConsumption = ((V.lowerClass * V.foodRate.lower) + (V.middleClass * V.foodRate.middle) + (V.upperClass * V.foodRate.upper) + (V.topClass * V.foodRate.top)); /* total amount food consumed per week */
 		}
+		if (V.localEcon > 100) {
+			V.farmyardFoodCost = Math.max(5 / (1 + (Math.trunc(1000-100000/V.localEcon)/10)/100), 3.125);
+		} else if (V.localEcon === 100) {
+			V.farmyardFoodCost = 5;
+		} else {
+			V.farmyardFoodCost = Math.min(5 * (1 + 1.5 * Math.sqrt(Math.trunc(100000/V.localEcon-1000)/10)/100), 6.5);
+		}
 	}
 
 	// Recalculate finished prosthetics
@@ -1324,8 +1334,29 @@ App.Update.globalVariables = function(node) {
 	V.nicaea.name = V.nicaea.name || V.nicaeaName || "";
 	V.nicaea.influence = V.nicaea.influence || V.nicaeaInfluence || 0;
 
+	V.shelterAbuse = Math.max(+V.shelterAbuse, 0) || 0;
+
+	// Menials
+	V.menials = Math.max(+V.menials, 0) || 0;
+	V.fuckdolls = Math.max(+V.fuckdolls, 0) || 0;
+	V.menialBioreactors = Math.max(+V.menialBioreactors, 0) || 0;
+
+	V.ACitizens = Math.max(+V.ACitizens, 0) || 0;
+	V.ASlaves = Math.max(+V.ASlaves, 0) || V.NPCSlaves + V.menials + V.fuckdolls + V.menialBioreactors;
+
+	// Materials costs
+	V.drugsCost = Math.trunc(10000 / V.localEcon);
+	V.rulesCost = Math.trunc(10000 / V.localEcon);
+	V.modCost = Math.trunc(5000 / V.localEcon);
+	V.surgeryCost = Math.trunc(30000 / (V.localEcon * ((V.PC.career === "medicine" || V.PC.career === "medical assistant" || V.PC.career === "nurse") ? 2 : 1)));
+	V.facilityCost = +V.facilityCost || 100;
+
+	// Schools
+	for (const school of App.Data.misc.schools.keys()) {
+		V[school].studentsBought = Math.max(+V[school].studentsBought, 0) || 0;
+		V[school].schoolProsperity = Math.clamp(+V[school].schoolProsperity, -10, 10) || 0;
+	}
 	EconomyDatatypeCleanup();
-	ArcologyDatatypeCleanup();
 
 	// Job Fulfillment Center (JFC)
 	V.JFC.order = V.JFC.order || V.JFCOrder || 0;
diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js
index 030cfe33c57a095e48da0bfabdf938a773741233..5c05c5bfb0df950d9a670aab3f2e9ccb8c075405 100644
--- a/src/data/backwardsCompatibility/datatypeCleanup.js
+++ b/src/data/backwardsCompatibility/datatypeCleanup.js
@@ -1381,7 +1381,6 @@ globalThis.PCDatatypeCleanup = function() {
 };
 
 globalThis.EconomyDatatypeCleanup = function() {
-	V.arcologies[0].prosperity = Math.clamp(+V.arcologies[0].prosperity, 1, V.AProsperityCap) || 1;
 	V.AProsperityCap = Math.max(+V.AProsperityCap, 0) || 0;
 	if (V.economy === 0.5) {
 		V.economy = 200;
@@ -1510,36 +1509,10 @@ globalThis.EconomyDatatypeCleanup = function() {
 	}
 };
 
-globalThis.ArcologyDatatypeCleanup = function() {
+App.Update.playerArcologyDatatypeCleanup = function() {
 	V.arcologies[0].ownership = Math.clamp(+V.arcologies[0].ownership, 0, 100) || 0;
 	V.arcologies[0].minority = Math.clamp(+V.arcologies[0].minority, 0, 100) || 0;
-
-	V.menials = Math.max(+V.menials, 0) || 0;
-	V.fuckdolls = Math.max(+V.fuckdolls, 0) || 0;
-	V.menialBioreactors = Math.max(+V.menialBioreactors, 0) || 0;
-
-	V.ACitizens = Math.max(+V.ACitizens, 0) || 0;
-	V.ASlaves = Math.max(+V.ASlaves, 0) || V.NPCSlaves + V.menials + V.fuckdolls + V.menialBioreactors;
-	V.shelterAbuse = Math.max(+V.shelterAbuse, 0) || 0;
-
-	if (V.localEcon > 100) {
-		V.farmyardFoodCost = Math.max(5 / (1 + (Math.trunc(1000-100000/V.localEcon)/10)/100), 3.125);
-	} else if (V.localEcon === 100) {
-		V.farmyardFoodCost = 5;
-	} else {
-		V.farmyardFoodCost = Math.min(5 * (1 + 1.5 * Math.sqrt(Math.trunc(100000/V.localEcon-1000)/10)/100), 6.5);
-	}
-	V.foodCost = Math.trunc(2500 / V.localEcon);
-	V.drugsCost = Math.trunc(10000 / V.localEcon);
-	V.rulesCost = Math.trunc(10000 / V.localEcon);
-	V.modCost = Math.trunc(5000 / V.localEcon);
-	V.surgeryCost = Math.trunc(30000 / (V.localEcon * ((V.PC.career === "medicine" || V.PC.career === "medical assistant" || V.PC.career === "nurse") ? 2 : 1)));
-	V.facilityCost = +V.facilityCost || 100;
-
-	for (const school of App.Data.misc.schools.keys()) {
-		V[school].studentsBought = Math.max(+V[school].studentsBought, 0) || 0;
-		V[school].schoolProsperity = Math.clamp(+V[school].schoolProsperity, -10, 10) || 0;
-	}
+	V.arcologies[0].prosperity = Math.clamp(+V.arcologies[0].prosperity, 1, V.AProsperityCap) || 1;
 };
 
 globalThis.FacilityDatatypeCleanup = (function() {