diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index f578b2cd9f480aac6d41eeedbc759128ad7e5677..7865db31dbddf8e45e2edf340a80e5736ffc7484 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -1037,10 +1037,11 @@ App.Data.defaultGameStateVariables = {
 	NPCSlaves: 900,
 	ASlaves: 900,
 	AProsperityCap: 0,
-	food: 50000,
+	food: 125000,
 	foodLastWeek: 0,
 	foodProduced: 0,
 	foodStored: 0,
+	farmyardFoodCost: 5,
 	foodCost: 25,
 	foodMarket: 0,
 	foodRate: {
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index 2c06f990a9da8a46d026a9569063f625b5f5a719..3a8e1766b763fc87174bd49189fb0e3c40843f39 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -996,7 +996,7 @@ App.Update.globalVariables = function() {
 		if (typeof V.sexSupplyBarriersLC !== "undefined") {
 			V.sexSupplyBarriers.lowerClass = V.sexSupplyBarriersLC;
 		}
-		V.food = Math.max(+V.food, 0) || 0;
+		V.food = Math.max(+V.food, 0) || 12500;
 		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 */
 		}
diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js
index d89b851d5b8e54834a6b2f679764019239badd03..80342a4fac252fc59885e82adb99fcc561d85612 100644
--- a/src/data/backwardsCompatibility/datatypeCleanup.js
+++ b/src/data/backwardsCompatibility/datatypeCleanup.js
@@ -1933,6 +1933,13 @@ window.ArcologyDatatypeCleanup = function ArcologyDatatypeCleanup() {
 	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);
diff --git a/src/events/intro/initNationalities.tw b/src/events/intro/initNationalities.tw
index c74149433bdc9e4157d036b498b56f4e262707fe..cd749bc20db9a24cd120a86ab2ff92da2877b66a 100644
--- a/src/events/intro/initNationalities.tw
+++ b/src/events/intro/initNationalities.tw
@@ -78,6 +78,15 @@
 		maxTroops: 0,
 		equip: 0} >>
 <</if>>
+<<if $experimental.food == 1>>
+	<<if $localEcon > 100>>
+		<<set $farmyardFoodCost = Math.max(5 / (1 + (Math.trunc(1000-100000/$localEcon)/10)/100), 3.125)>>
+	<<elseif $localEcon == 100>>
+		<<set $farmyardFoodCost = 5 >>
+	<<else>>
+		<<set $farmyardFoodCost = Math.min(5 * (1 + 1.5 * Math.sqrt(Math.trunc(100000/$localEcon-1000)/10)/100), 6.5)>>
+	<</if>
+<</if>
 
 <<set $minimumSlaveAge = variableAsNumber($minimumSlaveAge, 3, 18, 18)>>
 <<set $retirementAge = variableAsNumber($retirementAge, 25, 120, 45)>>
diff --git a/src/facilities/farmyard/farmyardReport.tw b/src/facilities/farmyard/farmyardReport.tw
index 022948b8e2bed8ecba760f006aef077ac4e86975..2173d95cd97fed139807d29d5eb530dec9edf44a 100644
--- a/src/facilities/farmyard/farmyardReport.tw
+++ b/src/facilities/farmyard/farmyardReport.tw
@@ -281,7 +281,8 @@
 			<<set _foodWeek = _incomeStats.food>>
 		<</if>>
 		<<if $farmMenials > 0>>
-			<<set _foodWeek += ($farmMenials*350)>>
+			/* TODO: Make menial slave output depend on farm upgrades. */
+			<<set _foodWeek += ($farmMenials*15)>>
 		<</if>>
 		</span>
 	<</for>>
diff --git a/src/facilities/farmyard/food/foodMarket.tw b/src/facilities/farmyard/food/foodMarket.tw
index 98b8d31ce5145536971cb6002f67a10bba11386e..0773bc2bafe22f8efcf29491369af7242af163cd 100644
--- a/src/facilities/farmyard/food/foodMarket.tw
+++ b/src/facilities/farmyard/food/foodMarket.tw
@@ -3,8 +3,8 @@
 <<if $useTabs == 0>>__The Food Market__<</if>>
 <br>
 
-<<set _foodValue = $foodStored*$foodCost>>  /* FIXME: currently costs 25 / kg, will need tweaking */
-<<set _maxFood = Math.trunc($cash/$foodCost)>>
+<<set _foodValue = Math.round(($foodStored*$farmyardFoodCost + Number.EPSILON) * 100) / 100>>
+<<set _maxFood = Math.trunc($cash/$farmyardFoodCost)>>
 The food market has @@.chocolate;<<print massFormat($foodStored)>>@@ in storage, valued at a total of @@.yellowgreen;<<print cashFormat(_foodValue)>>.@@
 
 <<if $sideBarOptions.compact > 0>>
@@ -13,30 +13,33 @@ The food market has @@.chocolate;<<print massFormat($foodStored)>>@@ in storage,
 	<<set _link = "Main">>
 <</if>>
 
-/* TODO: allow for the buying and selling of food */
 <br>
-<<link "Buy <<= massFormat(1)>>" _link>><<set cashX(forceNeg($foodCost*1), "farmyard"), $foodStored += 1>><</link>>
-| <<link "<<= massFormat(10)>>" _link>><<set cashX(forceNeg($foodCost*10), "farmyard"), $foodStored += 10>><</link>>
-| <<link "<<= massFormat(100)>>" _link>><<set cashX(forceNeg($foodCost*100), "farmyard"), $foodStored += 100>><</link>>
-| <<link "<<= massFormat(1000)>>" _link>><<set cashX(forceNeg($foodCost*1000), "farmyard"), $foodStored += 1000>><</link>>
-| <<link "<<= massFormat(10000)>>" _link>><<set cashX(forceNeg($foodCost*10000), "farmyard"), $foodStored += 10000>><</link>>
-| <<link "max" _link>><<set cashX(forceNeg(_maxFood*$foodCost), "farmyard"), $foodStored += _maxFood>><</link>>
+<<link "Buy <<= massFormat(1)>>" _link>><<set cashX(forceNeg($farmyardFoodCost*1), "farmyard"), $foodStored += 1>><</link>>
+| <<link "<<= massFormat(10)>>" _link>><<set cashX(forceNeg($farmyardFoodCost*10), "farmyard"), $foodStored += 10>><</link>>
+| <<link "<<= massFormat(100)>>" _link>><<set cashX(forceNeg($farmyardFoodCost*100), "farmyard"), $foodStored += 100>><</link>>
+| <<link "<<= massFormat(1000)>>" _link>><<set cashX(forceNeg($farmyardFoodCost*1000), "farmyard"), $foodStored += 1000>><</link>>
+| <<link "<<= massFormat(10000)>>" _link>><<set cashX(forceNeg($farmyardFoodCost*10000), "farmyard"), $foodStored += 10000>><</link>>
+| <<link "<<= massFormat(100000)>>" _link>><<set cashX(forceNeg($farmyardFoodCost*100000), "farmyard"), $foodStored += 100000>><</link>>
+| <<link "max" _link>><<set cashX(forceNeg(_maxFood*$farmyardFoodCost), "farmyard"), $foodStored += _maxFood>><</link>>
 <<if $foodStored > 0>>
 	<br>
-	<<link "Sell <<= massFormat(1)>>" _link>><<set cashX(($foodCost*1), "farmyard"), $foodStored -= 1>><</link>>
+	<<link "Sell <<= massFormat(1)>>" _link>><<set cashX(($farmyardFoodCost*1), "farmyard"), $foodStored -= 1>><</link>>
 	<<if $foodStored >= 10>>
-		| <<link "<<= massFormat(10)>>" _link>><<set cashX(($foodCost*10), "farmyard"), $foodStored -= 10>><</link>>
+		| <<link "<<= massFormat(10)>>" _link>><<set cashX(($farmyardFoodCost*10), "farmyard"), $foodStored -= 10>><</link>>
 	<</if>>
 	<<if $foodStored >= 100>>
-		| <<link "<<= massFormat(100)>>" _link>><<set cashX(($foodCost*100), "farmyard"), $foodStored -= 100>><</link>>
+		| <<link "<<= massFormat(100)>>" _link>><<set cashX(($farmyardFoodCost*100), "farmyard"), $foodStored -= 100>><</link>>
 	<</if>>
 	<<if $foodStored >= 1000>>
-		| <<link "<<= massFormat(1000)>>" _link>><<set cashX(($foodCost*1000), "farmyard"), $foodStored -= 1000>><</link>>
+		| <<link "<<= massFormat(1000)>>" _link>><<set cashX(($farmyardFoodCost*1000), "farmyard"), $foodStored -= 1000>><</link>>
 	<</if>>
 	<<if $foodStored >= 10000>>
-		| <<link "<<= massFormat(10000)>>" _link>><<set cashX(($foodCost*10000), "farmyard"), $foodStored -= 10000>><</link>>
+		| <<link "<<= massFormat(10000)>>" _link>><<set cashX(($farmyardFoodCost*10000), "farmyard"), $foodStored -= 10000>><</link>>
 	<</if>>
-	| <<link "max" _link>><<set cashX(($foodCost*$foodStored), "farmyard"), $foodStored = 0>><</link>>
+	<<if $foodStored >= 100000>>
+		| <<link "<<= massFormat(100000)>>" _link>><<set cashX(($farmyardFoodCost*100000), "farmyard"), $foodStored -= 100000>><</link>>
+	<</if>>
+	| <<link "max" _link>><<set cashX(($farmyardFoodCost*$foodStored), "farmyard"), $foodStored = 0>><</link>>
 <</if>>
 <<if $food > 0>>
 	<br>
@@ -53,6 +56,9 @@ The food market has @@.chocolate;<<print massFormat($foodStored)>>@@ in storage,
 	<<if $food >= 10000>>
 		| <<link "<<= massFormat(10000)>>" _link>><<set $foodStored += 10000, $food -= 10000>><</link>>
 	<</if>>
+	<<if $food >= 100000>>
+		| <<link "<<= massFormat(100000)>>" _link>><<set $foodStored += 100000, $food -= 10000>><</link>>
+	<</if>>
 	| <<link "max" _link>><<set $foodStored += $food, $food = 0>><</link>>
 <</if>>
 <<if $foodStored > 0>>
@@ -70,5 +76,8 @@ The food market has @@.chocolate;<<print massFormat($foodStored)>>@@ in storage,
 	<<if $foodStored >= 10000>>
 		| <<link "<<= massFormat(10000)>>" _link>><<set $food += 10000, $foodStored -= 10000>><</link>>
 	<</if>>
+	<<if $foodStored >= 100000>>
+		| <<link "<<= massFormat(10000)>>" _link>><<set $food += 100000, $foodStored -= 10000>><</link>>
+	<</if>>
 	| <<link "max" _link>><<set $food += $foodStored, $foodStored = 0>><</link>>
 <</if>>
diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw
index 2652c2a9703df7c7557ed3ee6c5e0f588cf222e3..231d1ba7985f30cd8ca4151c39c5fa446858f350 100644
--- a/src/uncategorized/nextWeek.tw
+++ b/src/uncategorized/nextWeek.tw
@@ -84,6 +84,15 @@
 		<<set $localEcon = 20>>
 	<</if>>
 
+	<<if $experimental.food == 1>>
+		<<if $localEcon > 100>>
+			<<set $farmyardFoodCost = Math.max(5 / (1 + (Math.trunc(1000-100000/$localEcon)/10)/100), 3.125)>>
+		<<elseif $localEcon == 100>>
+			<<set $farmyardFoodCost = 5 >>
+		<<else>>
+			<<set $farmyardFoodCost = Math.min(5 * (1 + 1.5 * Math.sqrt(Math.trunc(100000/$localEcon-1000)/10)/100), 6.5)>>
+		<</if>
+	<</if>
 	<<set $foodCost = Math.trunc(2500/$localEcon)>>
 	<<set $drugsCost = Math.trunc(10000/$localEcon)>>
 	<<set $rulesCost = Math.trunc(10000/$localEcon)>>