From 043cf20ec2a328fd968e3b4047a8b19ad6fbdb9d Mon Sep 17 00:00:00 2001
From: Peter Alexander <>
Date: Sun, 16 Jan 2022 21:01:13 +0000
Subject: [PATCH] Further dynamic export tax changes

---
 data/sims/globalShock.csv                     | 27 +++---
 data/sims/globalShock_params.csv              | 83 +++++++++++++------
 src/ac/ed/lurg/ModelMain.java                 |  2 +
 .../ed/lurg/country/AbstractCountryAgent.java |  9 +-
 .../ed/lurg/country/CountryAgentManager.java  |  6 ++
 5 files changed, 87 insertions(+), 40 deletions(-)

diff --git a/data/sims/globalShock.csv b/data/sims/globalShock.csv
index d338d395..1ac9988d 100644
--- a/data/sims/globalShock.csv
+++ b/data/sims/globalShock.csv
@@ -1,11 +1,16 @@
-Ensemble,Scenario,AGRI_LAND_EXPANSION_COST_FACTOR,ANNUAL_MAX_IMPORT_CHANGE,BIOENERGY_DEMAND_SHIFT,CROP_TO_PASTURE_COST_FACTOR,FERTILISER_COST_PER_T,INITIAL_PRICE_SHIFT,IRRIG_COST_SCALE_FACTOR,IRRIGATION_EFFICIENCY,LAND_CHANGE_COST,MARKET_LAMBA,MEAT_EFFICIENCY,MIN_NATURAL_RATE,OTHER_INTENSITY_COST,PASTURE_HARVEST_FRACTION,SSP_GDP_PC_FACTOR,SSP_POPULATION_FACTOR,SSP_SCENARIO,TECHNOLOGY_CHANGE_ANNUAL_RATE,TRADE_BARRIER_MULTIPLIER,TRANSPORT_COST,RCP,BIOENERGY_FUTURE_DEMAND_FILENAME,SHOCKS_POSSIBLE,YIELD_DIR_TOP,BIOENERGY_DEMAND_SCENARIO
-shocks/noShocks,s1,1,0.02,1,1,1.6,1,0.00035,0.5,0.2,0.4,1,0.1,0.7,0.5,1,1,SSP2_v9_130325,0.002,1,0.05,rcp45,bioenergy_scenario_data.csv,FALSE,rcp45,SSP2_RCP45
-shocks/noShocks,s2,1.08270938702243,0.0187532681030967,1.05,0.9,1.72467318969033,0.9,0.000392014778383574,0.491729061297757,0.189688362297416,0.45,0.995864530648878,0.12174185522096,0.679221135051611,0.55,0.95,1.05,SSP2_v9_130325,0.00158753449189663,1.08270938702243,0.0458442270103222,rcp45,bioenergy_scenario_data.csv,FALSE,rcp45,SSP2_RCP45
-shocks/noShocks,s3,0.91729061297757,0.0212467318969033,0.95,1.1,1.47532681030967,1.1,0.000307985221616426,0.508270938702243,0.210311637702584,0.35,1.00413546935112,0.0782581447790401,0.720778864948389,0.45,1.05,0.95,SSP2_v9_130325,0.00241246550810337,0.91729061297757,0.0541557729896778,rcp45,bioenergy_scenario_data.csv,FALSE,rcp45,SSP2_RCP45
-shocks/noShocks,s4,0.960874657414893,0.0194097808551165,1.025,0.85,1.81153483560056,1.15,0.000279015531982238,0.503912534258511,0.182453074797474,0.475,0.998043732870745,0.110368611745326,0.664744194066573,0.475,1.025,0.925,SSP2_v9_130325,0.00180496552244993,0.960874657414893,0.0570511611866855,rcp45,bioenergy_scenario_data.csv,FALSE,rcp45,SSP2_RCP45
-shocks/noShocks,s5,1.14060088096457,0.0221153483560056,0.925,1.05,1.54097808551165,0.95,0.000369925055308764,0.485939911903543,0.204875861938752,0.375,1.00703004404823,0.0637597348849639,0.709836985748058,0.575,0.925,1.025,SSP2_v9_130325,0.00270187700810103,1.14060088096457,0.0480326028503884,rcp45,bioenergy_scenario_data.csv,FALSE,rcp45,SSP2_RCP45
-shocks/withShocks,s1,1,0.02,1,1,1.6,1,0.00035,0.5,0.2,0.4,1,0.1,0.7,0.5,1,1,SSP2_v9_130325,0.002,1,0.05,rcp45,bioenergy_scenario_data.csv,TRUE,rcp45,SSP2_RCP45
-shocks/withShocks,s2,1.08270938702243,0.0187532681030967,1.05,0.9,1.72467318969033,0.9,0.000392014778383574,0.491729061297757,0.189688362297416,0.45,0.995864530648878,0.12174185522096,0.679221135051611,0.55,0.95,1.05,SSP2_v9_130325,0.00158753449189663,1.08270938702243,0.0458442270103222,rcp45,bioenergy_scenario_data.csv,TRUE,rcp45,SSP2_RCP45
-shocks/withShocks,s3,0.91729061297757,0.0212467318969033,0.95,1.1,1.47532681030967,1.1,0.000307985221616426,0.508270938702243,0.210311637702584,0.35,1.00413546935112,0.0782581447790401,0.720778864948389,0.45,1.05,0.95,SSP2_v9_130325,0.00241246550810337,0.91729061297757,0.0541557729896778,rcp45,bioenergy_scenario_data.csv,TRUE,rcp45,SSP2_RCP45
-shocks/withShocks,s4,0.960874657414893,0.0194097808551165,1.025,0.85,1.81153483560056,1.15,0.000279015531982238,0.503912534258511,0.182453074797474,0.475,0.998043732870745,0.110368611745326,0.664744194066573,0.475,1.025,0.925,SSP2_v9_130325,0.00180496552244993,0.960874657414893,0.0570511611866855,rcp45,bioenergy_scenario_data.csv,TRUE,rcp45,SSP2_RCP45
-shocks/withShocks,s5,1.14060088096457,0.0221153483560056,0.925,1.05,1.54097808551165,0.95,0.000369925055308764,0.485939911903543,0.204875861938752,0.375,1.00703004404823,0.0637597348849639,0.709836985748058,0.575,0.925,1.025,SSP2_v9_130325,0.00270187700810103,1.14060088096457,0.0480326028503884,rcp45,bioenergy_scenario_data.csv,TRUE,rcp45,SSP2_RCP45
+Ensemble,Scenario,AGRI_LAND_EXPANSION_COST_FACTOR,ANNUAL_MAX_IMPORT_CHANGE,BIOENERGY_DEMAND_SHIFT,CROP_TO_PASTURE_COST_FACTOR,FERTILISER_COST_PER_T,INITIAL_PRICE_SHIFT,IRRIG_COST_SCALE_FACTOR,IRRIGATION_EFFICIENCY,LAND_CHANGE_COST,MARKET_LAMBA,MEAT_EFFICIENCY,MIN_NATURAL_RATE,OTHER_INTENSITY_COST,PASTURE_HARVEST_FRACTION,SSP_GDP_PC_FACTOR,SSP_POPULATION_FACTOR,SSP_SCENARIO,TECHNOLOGY_CHANGE_ANNUAL_RATE,TRADE_BARRIER_MULTIPLIER,TRANSPORT_COST,RCP,SHOCKS_POSSIBLE,APPLY_EXPORT_TAXES,EXPORT_TAX_RATE,EXPORT_TAX_THRESHOLD,YIELD_DIR_TOP,BIOENERGY_DEMAND_SCENARIO
+shocks/noShocks,s1,1,0.02,1,1,1.6,1,0.00035,0.5,0.2,0.4,1,0.1,0.7,0.5,1,1,SSP2_v9_130325,0.002,1,0.05,rcp45,FALSE,FALSE,1,0.1,rcp45,SSP2_RCP45
+shocks/noShocks,s2,1.08270938702243,0.0187532681030967,1.05,0.9,1.72467318969033,0.9,0.000392014778383574,0.491729061297757,0.189688362297416,0.45,0.995864530648878,0.12174185522096,0.679221135051611,0.55,0.95,1.05,SSP2_v9_130325,0.00158753449189663,1.08270938702243,0.0458442270103222,rcp45,FALSE,FALSE,1.25,0.125,rcp45,SSP2_RCP45
+shocks/noShocks,s3,0.91729061297757,0.0212467318969033,0.95,1.1,1.47532681030967,1.1,0.000307985221616426,0.508270938702243,0.210311637702584,0.35,1.00413546935112,0.0782581447790401,0.720778864948389,0.45,1.05,0.95,SSP2_v9_130325,0.00241246550810337,0.91729061297757,0.0541557729896778,rcp45,FALSE,FALSE,0.75,0.075,rcp45,SSP2_RCP45
+shocks/noShocks,s4,0.960874657414893,0.0194097808551165,1.025,0.85,1.81153483560056,1.15,0.000279015531982238,0.503912534258511,0.182453074797474,0.475,0.998043732870745,0.110368611745326,0.664744194066573,0.475,1.025,0.925,SSP2_v9_130325,0.00180496552244993,0.960874657414893,0.0570511611866855,rcp45,FALSE,FALSE,1.375,0.0875,rcp45,SSP2_RCP45
+shocks/noShocks,s5,1.14060088096457,0.0221153483560056,0.925,1.05,1.54097808551165,0.95,0.000369925055308764,0.485939911903543,0.204875861938752,0.375,1.00703004404823,0.0637597348849639,0.709836985748058,0.575,0.925,1.025,SSP2_v9_130325,0.00270187700810103,1.14060088096457,0.0480326028503884,rcp45,FALSE,FALSE,0.875,0.1375,rcp45,SSP2_RCP45
+shocks/noTax,s1,1,0.02,1,1,1.6,1,0.00035,0.5,0.2,0.4,1,0.1,0.7,0.5,1,1,SSP2_v9_130325,0.002,1,0.05,rcp45,TRUE,FALSE,1,0.1,rcp45,SSP2_RCP45
+shocks/noTax,s2,1.08270938702243,0.0187532681030967,1.05,0.9,1.72467318969033,0.9,0.000392014778383574,0.491729061297757,0.189688362297416,0.45,0.995864530648878,0.12174185522096,0.679221135051611,0.55,0.95,1.05,SSP2_v9_130325,0.00158753449189663,1.08270938702243,0.0458442270103222,rcp45,TRUE,FALSE,1.25,0.125,rcp45,SSP2_RCP45
+shocks/noTax,s3,0.91729061297757,0.0212467318969033,0.95,1.1,1.47532681030967,1.1,0.000307985221616426,0.508270938702243,0.210311637702584,0.35,1.00413546935112,0.0782581447790401,0.720778864948389,0.45,1.05,0.95,SSP2_v9_130325,0.00241246550810337,0.91729061297757,0.0541557729896778,rcp45,TRUE,FALSE,0.75,0.075,rcp45,SSP2_RCP45
+shocks/noTax,s4,0.960874657414893,0.0194097808551165,1.025,0.85,1.81153483560056,1.15,0.000279015531982238,0.503912534258511,0.182453074797474,0.475,0.998043732870745,0.110368611745326,0.664744194066573,0.475,1.025,0.925,SSP2_v9_130325,0.00180496552244993,0.960874657414893,0.0570511611866855,rcp45,TRUE,FALSE,1.375,0.0875,rcp45,SSP2_RCP45
+shocks/noTax,s5,1.14060088096457,0.0221153483560056,0.925,1.05,1.54097808551165,0.95,0.000369925055308764,0.485939911903543,0.204875861938752,0.375,1.00703004404823,0.0637597348849639,0.709836985748058,0.575,0.925,1.025,SSP2_v9_130325,0.00270187700810103,1.14060088096457,0.0480326028503884,rcp45,TRUE,FALSE,0.875,0.1375,rcp45,SSP2_RCP45
+shocks/withTax,s1,1,0.02,1,1,1.6,1,0.00035,0.5,0.2,0.4,1,0.1,0.7,0.5,1,1,SSP2_v9_130325,0.002,1,0.05,rcp45,TRUE,TRUE,1,0.1,rcp45,SSP2_RCP45
+shocks/withTax,s2,1.08270938702243,0.0187532681030967,1.05,0.9,1.72467318969033,0.9,0.000392014778383574,0.491729061297757,0.189688362297416,0.45,0.995864530648878,0.12174185522096,0.679221135051611,0.55,0.95,1.05,SSP2_v9_130325,0.00158753449189663,1.08270938702243,0.0458442270103222,rcp45,TRUE,TRUE,1.25,0.125,rcp45,SSP2_RCP45
+shocks/withTax,s3,0.91729061297757,0.0212467318969033,0.95,1.1,1.47532681030967,1.1,0.000307985221616426,0.508270938702243,0.210311637702584,0.35,1.00413546935112,0.0782581447790401,0.720778864948389,0.45,1.05,0.95,SSP2_v9_130325,0.00241246550810337,0.91729061297757,0.0541557729896778,rcp45,TRUE,TRUE,0.75,0.075,rcp45,SSP2_RCP45
+shocks/withTax,s4,0.960874657414893,0.0194097808551165,1.025,0.85,1.81153483560056,1.15,0.000279015531982238,0.503912534258511,0.182453074797474,0.475,0.998043732870745,0.110368611745326,0.664744194066573,0.475,1.025,0.925,SSP2_v9_130325,0.00180496552244993,0.960874657414893,0.0570511611866855,rcp45,TRUE,TRUE,1.375,0.0875,rcp45,SSP2_RCP45
+shocks/withTax,s5,1.14060088096457,0.0221153483560056,0.925,1.05,1.54097808551165,0.95,0.000369925055308764,0.485939911903543,0.204875861938752,0.375,1.00703004404823,0.0637597348849639,0.709836985748058,0.575,0.925,1.025,SSP2_v9_130325,0.00270187700810103,1.14060088096457,0.0480326028503884,rcp45,TRUE,TRUE,0.875,0.1375,rcp45,SSP2_RCP45
diff --git a/data/sims/globalShock_params.csv b/data/sims/globalShock_params.csv
index f1329e3d..a40a576f 100644
--- a/data/sims/globalShock_params.csv
+++ b/data/sims/globalShock_params.csv
@@ -22,30 +22,61 @@ noShocks,TRANSPORT_COST,beta,0.01,0.09,0.04,0.05,0.06,
 noShocks,RCP,value,,,,,,rcp45
 noShocks,BIOENERGY_DEMAND_SCENARIO,value,,,,,,ssp2
 noShocks,YIELD_DIR_TOP,value,,,,,,ssp2
-noShocks,BIOENERGY_FUTURE_DEMAND_FILENAME,value,,,,,,bioenergy_scenario_data.csv
 noShocks,SHOCKS_POSSIBLE,value,,,,,,FALSE
-withShocks,AGRI_LAND_EXPANSION_COST_FACTOR,beta,0,2,0.8,1,1.2,
-withShocks,ANNUAL_MAX_IMPORT_CHANGE,beta,0.008,0.032,0.017,0.02,0.023,
-withShocks,BIOENERGY_DEMAND_SHIFT,unif,0.9,1.1,,,,
-withShocks,CROP_TO_PASTURE_COST_FACTOR,unif,0.8,1.2,,,,
-withShocks,FERTILISER_COST_PER_T,beta,0.4,2.8,1.3,1.6,1.9,
-withShocks,INITIAL_PRICE_SHIFT,unif,0.8,1.2,,,,
-withShocks,IRRIG_COST_SCALE_FACTOR,beta,0.00005,0.00065,0.00025,0.00035,0.00045,
-withShocks,IRRIGATION_EFFICIENCY,beta,0.4,0.6,0.48,0.5,0.52,
-withShocks,LAND_CHANGE_COST,beta,0.05,0.35,0.175,0.2,0.225,
-withShocks,MARKET_LAMBA,unif,0.3,0.5,,,,
-withShocks,MEAT_EFFICIENCY,beta,0.95,1.05,0.99,1,1.01,
-withShocks,MIN_NATURAL_RATE,beta,0,0.2,0.05,0.1,0.15,
-withShocks,OTHER_INTENSITY_COST,beta,0.5,0.9,0.65,0.7,0.75,
-withShocks,PASTURE_HARVEST_FRACTION,unif,0.4,0.6,,,,
-withShocks,SSP_GDP_PC_FACTOR,unif,0.9,1.1,,,,
-withShocks,SSP_POPULATION_FACTOR,unif,0.9,1.1,,,,
-withShocks,SSP_SCENARIO,value,,,,,,SSP2_v9_130325
-withShocks,TECHNOLOGY_CHANGE_ANNUAL_RATE,beta,-0.004,0.008,0.001,0.002,0.003,
-withShocks,TRADE_BARRIER_MULTIPLIER,beta,0,2,0.8,1,1.2,
-withShocks,TRANSPORT_COST,beta,0.01,0.09,0.04,0.05,0.06,
-withShocks,RCP,value,,,,,,rcp45
-withShocks,BIOENERGY_DEMAND_SCENARIO,value,,,,,,ssp2
-withShocks,YIELD_DIR_TOP,value,,,,,,ssp2
-withShocks,BIOENERGY_FUTURE_DEMAND_FILENAME,value,,,,,,bioenergy_scenario_data.csv
-withShocks,SHOCKS_POSSIBLE,value,,,,,,TRUE
\ No newline at end of file
+noShocks,APPLY_EXPORT_TAXES,value,,,,,,FALSE
+noShocks,EXPORT_TAX_RATE,unif,0.5,1.5,,,,
+noShocks,EXPORT_TAX_THRESHOLD,unif,0.05,0.15,,,,
+noTax,AGRI_LAND_EXPANSION_COST_FACTOR,beta,0,2,0.8,1,1.2,
+noTax,ANNUAL_MAX_IMPORT_CHANGE,beta,0.008,0.032,0.017,0.02,0.023,
+noTax,BIOENERGY_DEMAND_SHIFT,unif,0.9,1.1,,,,
+noTax,CROP_TO_PASTURE_COST_FACTOR,unif,0.8,1.2,,,,
+noTax,FERTILISER_COST_PER_T,beta,0.4,2.8,1.3,1.6,1.9,
+noTax,INITIAL_PRICE_SHIFT,unif,0.8,1.2,,,,
+noTax,IRRIG_COST_SCALE_FACTOR,beta,0.00005,0.00065,0.00025,0.00035,0.00045,
+noTax,IRRIGATION_EFFICIENCY,beta,0.4,0.6,0.48,0.5,0.52,
+noTax,LAND_CHANGE_COST,beta,0.05,0.35,0.175,0.2,0.225,
+noTax,MARKET_LAMBA,unif,0.3,0.5,,,,
+noTax,MEAT_EFFICIENCY,beta,0.95,1.05,0.99,1,1.01,
+noTax,MIN_NATURAL_RATE,beta,0,0.2,0.05,0.1,0.15,
+noTax,OTHER_INTENSITY_COST,beta,0.5,0.9,0.65,0.7,0.75,
+noTax,PASTURE_HARVEST_FRACTION,unif,0.4,0.6,,,,
+noTax,SSP_GDP_PC_FACTOR,unif,0.9,1.1,,,,
+noTax,SSP_POPULATION_FACTOR,unif,0.9,1.1,,,,
+noTax,SSP_SCENARIO,value,,,,,,SSP2_v9_130325
+noTax,TECHNOLOGY_CHANGE_ANNUAL_RATE,beta,-0.004,0.008,0.001,0.002,0.003,
+noTax,TRADE_BARRIER_MULTIPLIER,beta,0,2,0.8,1,1.2,
+noTax,TRANSPORT_COST,beta,0.01,0.09,0.04,0.05,0.06,
+noTax,RCP,value,,,,,,rcp45
+noTax,BIOENERGY_DEMAND_SCENARIO,value,,,,,,ssp2
+noTax,YIELD_DIR_TOP,value,,,,,,ssp2
+noTax,SHOCKS_POSSIBLE,value,,,,,,TRUE
+noTax,APPLY_EXPORT_TAXES,value,,,,,,FALSE
+noTax,EXPORT_TAX_RATE,unif,0.5,1.5,,,,
+noTax,EXPORT_TAX_THRESHOLD,unif,0.05,0.15,,,,
+withTax,AGRI_LAND_EXPANSION_COST_FACTOR,beta,0,2,0.8,1,1.2,
+withTax,ANNUAL_MAX_IMPORT_CHANGE,beta,0.008,0.032,0.017,0.02,0.023,
+withTax,BIOENERGY_DEMAND_SHIFT,unif,0.9,1.1,,,,
+withTax,CROP_TO_PASTURE_COST_FACTOR,unif,0.8,1.2,,,,
+withTax,FERTILISER_COST_PER_T,beta,0.4,2.8,1.3,1.6,1.9,
+withTax,INITIAL_PRICE_SHIFT,unif,0.8,1.2,,,,
+withTax,IRRIG_COST_SCALE_FACTOR,beta,0.00005,0.00065,0.00025,0.00035,0.00045,
+withTax,IRRIGATION_EFFICIENCY,beta,0.4,0.6,0.48,0.5,0.52,
+withTax,LAND_CHANGE_COST,beta,0.05,0.35,0.175,0.2,0.225,
+withTax,MARKET_LAMBA,unif,0.3,0.5,,,,
+withTax,MEAT_EFFICIENCY,beta,0.95,1.05,0.99,1,1.01,
+withTax,MIN_NATURAL_RATE,beta,0,0.2,0.05,0.1,0.15,
+withTax,OTHER_INTENSITY_COST,beta,0.5,0.9,0.65,0.7,0.75,
+withTax,PASTURE_HARVEST_FRACTION,unif,0.4,0.6,,,,
+withTax,SSP_GDP_PC_FACTOR,unif,0.9,1.1,,,,
+withTax,SSP_POPULATION_FACTOR,unif,0.9,1.1,,,,
+withTax,SSP_SCENARIO,value,,,,,,SSP2_v9_130325
+withTax,TECHNOLOGY_CHANGE_ANNUAL_RATE,beta,-0.004,0.008,0.001,0.002,0.003,
+withTax,TRADE_BARRIER_MULTIPLIER,beta,0,2,0.8,1,1.2,
+withTax,TRANSPORT_COST,beta,0.01,0.09,0.04,0.05,0.06,
+withTax,RCP,value,,,,,,rcp45
+withTax,BIOENERGY_DEMAND_SCENARIO,value,,,,,,ssp2
+withTax,YIELD_DIR_TOP,value,,,,,,ssp2
+withTax,SHOCKS_POSSIBLE,value,,,,,,TRUE
+withTax,APPLY_EXPORT_TAXES,value,,,,,,TRUE
+withTax,EXPORT_TAX_RATE,unif,0.5,1.5,,,,
+withTax,EXPORT_TAX_THRESHOLD,unif,0.05,0.15,,,,
\ No newline at end of file
diff --git a/src/ac/ed/lurg/ModelMain.java b/src/ac/ed/lurg/ModelMain.java
index aae4fe71..06e11cdb 100644
--- a/src/ac/ed/lurg/ModelMain.java
+++ b/src/ac/ed/lurg/ModelMain.java
@@ -124,6 +124,8 @@ public class ModelMain {
 		YieldRaster yieldSurfaces = getYieldSurfaces(timestep); // this will wait for the marker file from LPJ if configured to do so
 		getUpdateIrrigationData(timestep, yieldSurfaces); // updating currentIrrigationData
 
+		countryAgents.savePreviousProducerCropPricesForAll();
+		
 		// When running half earth we can to alter protected areas data at a point in time
 		if(ModelConfig.HALFEARTH && ModelConfig.FORCE_PROTECTED_AREAS_START_YEAR == timestep.getYear() && !ModelConfig.IS_CALIBRATION_RUN) {
 			new ProtectedAreasReader(globalLandUseRaster).getRasterDataFromFile(ModelConfig.HALF_EARTH_FILE);
diff --git a/src/ac/ed/lurg/country/AbstractCountryAgent.java b/src/ac/ed/lurg/country/AbstractCountryAgent.java
index 6ce9ec3a..f5af8f01 100644
--- a/src/ac/ed/lurg/country/AbstractCountryAgent.java
+++ b/src/ac/ed/lurg/country/AbstractCountryAgent.java
@@ -60,10 +60,13 @@ public abstract class AbstractCountryAgent {
 		currentCountryPrices = countryPrices;
 	}
 	
-	protected void calculateProducerCropPrices() {
-		// save old prices so that comparison can be made after initial time step
+	protected void savePreviousProducerCropPrices() {
 		previousProducerCropPrices = currentProducerCropPrices;
-		currentProducerCropPrices = getProducerCropPrices(); 
+	}
+
+	protected void calculateProducerCropPrices() {
+		LogWriter.println("calculateProducerCropPrices " + country + " " + currentTimestep);
+		currentProducerCropPrices = getProducerCropPrices();
 	}
 	
 	protected void calculateExportTax() {
diff --git a/src/ac/ed/lurg/country/CountryAgentManager.java b/src/ac/ed/lurg/country/CountryAgentManager.java
index 7a9abf49..569e76b1 100644
--- a/src/ac/ed/lurg/country/CountryAgentManager.java
+++ b/src/ac/ed/lurg/country/CountryAgentManager.java
@@ -145,6 +145,12 @@ public class CountryAgentManager {
 		}
 	}
 	
+	public void savePreviousProducerCropPricesForAll() {
+		for (CountryAgent ca : gamsCountryAgents) {
+			ca.savePreviousProducerCropPrices();
+		}
+	}
+	
 	public void serializeCropUsageForAll() {
 		Map<CompositeCountry, Map<CropType, CropUsageData>> cropUsageDataMap = new HashMap<CompositeCountry, Map<CropType, CropUsageData>>();
 		for (CountryAgent ca : gamsCountryAgents) {
-- 
GitLab