diff --git a/src/events/intro/initNationalities.tw b/src/events/intro/initNationalities.tw
index c74149433bdc9e4157d036b498b56f4e262707fe..80ba178334f47bd03d3f717ca0e9f286ba034fba 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 >>
+	<<elseif $localEcon < 100>>
+		<<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..c49a58226b9aa6407048d54e8facca7dbb44bcd7 100644
--- a/src/uncategorized/nextWeek.tw
+++ b/src/uncategorized/nextWeek.tw
@@ -84,6 +84,13 @@
 		<<set $localEcon = 20>>
 	<</if>>
 
+	<<if $localEcon > 100>>
+		<<set $farmyardFoodCost = Math.max(5 / (1 + (Math.trunc(1000-100000/$localEcon)/10)/100), 3.125)>>
+	<<elseif $localEcon == 100>>
+		<<set $farmyardFoodCost = 5 >>
+	<<elseif $localEcon < 100>>
+		<<set $farmyardFoodCost = Math.min(5 * (1 + 1.5 * Math.sqrt(Math.trunc(100000/$localEcon-1000)/10)/100), 6.5)>>
+	<</if>
 	<<set $foodCost = Math.trunc(2500/$localEcon)>>
 	<<set $drugsCost = Math.trunc(10000/$localEcon)>>
 	<<set $rulesCost = Math.trunc(10000/$localEcon)>>