diff --git a/GAMS/IntExtOpt.gms b/GAMS/IntExtOpt.gms
index 4c55afe0d7e0b3ac86022db0fb01e5374c056809..cb70376a3b413f3dcbf003877a98cfb97f61c820 100644
--- a/GAMS/IntExtOpt.gms
+++ b/GAMS/IntExtOpt.gms
@@ -115,10 +115,10 @@ $gdxin
        PASTURE_DECREASE_CONV_CALC(location)             
        COST_EQ                                        total cost objective function;
  
- UNIT_COST_EQ(crop, location) .. unitCost(crop, location) =E=  ( baseCost(crop) +              
+ UNIT_COST_EQ(crop, location) .. unitCost(crop, location) =E=  (     baseCost(crop) * 0.5 +           
                                                                      fertiliserUnitCost * fertI(crop, location) + 
                                                                      irrigCost(location) * irrigMaxRate(crop, location) * irrigI(crop, location) +
-                                                                     otherICost * otherIntensity(crop, location)
+                                                                     (baseCost(crop) * 0.5 + otherICost) * otherIntensity(crop, location)
                                                                      ) ;
  
  YIELD_EQ(crop, location) .. yield(crop, location) =E= (
@@ -133,7 +133,7 @@ $gdxin
                (yieldBoth(crop, location) + yieldNone(crop, location) - yieldFertOnly(crop, location) - yieldIrrigOnly(crop, location)) *
                                       (1 - exp(-fertParam(crop, location)*fertI(crop, location))) * (1 - exp(-irrigParam(crop, location)*irrigI(crop, location)))
 
-            ) * (1 - 0.9 * exp(-otherIntensity(crop, location)*otherIParam));
+            ) * (1 - exp(-otherIntensity(crop, location)*otherIParam));
    
  NET_SUPPLY_EQ(crop) .. net_supply(crop) =E= (sum(location, area(crop, location) * yield(crop, location)) - feedAmount(crop)) / cropDM(crop) + importAmount(crop) - exportAmount(crop);
   
@@ -175,10 +175,10 @@ $gdxin
                   
                   SUM(location, 
                      1.0 * agriLandExpansion(location) +
-                     0.25 * cropIncrease(location) + 
-                     0.25 * cropDecrease(location) + 
-                     0.25 * pastureIncrease(location) + 
-                     0.25 * pastureDecrease(location)
+                     0.5 * cropIncrease(location) + 
+                     0.5 * cropDecrease(location) + 
+                     0.5 * pastureIncrease(location) + 
+                     0.5 * pastureDecrease(location)
                      )  * landChangeCost
                ) * domesticPriceMarkup + 
 
diff --git a/src/ac/ed/lurg/ModelConfig.java b/src/ac/ed/lurg/ModelConfig.java
index c70e4443b41d6b22305789af468877848db1624a..f7fae185b2ab98587f17adc03b9666330480e2a5 100644
--- a/src/ac/ed/lurg/ModelConfig.java
+++ b/src/ac/ed/lurg/ModelConfig.java
@@ -163,9 +163,9 @@ public class ModelConfig {
 	public static final double UNHANDLED_CROP_AREA = getDoubleProperty("UNHANDLED_CROP_AREA", 0.4);  // includes fruit veg forage crops set aside and failed crop
 	
 	public static final double OTHER_INTENSITY_COST = getDoubleProperty("OTHER_INTENSITY_COST", 0.3);
-	public static final double OTHER_INTENSITY_PARAM = getDoubleProperty("OTHER_INTENSITY_PARAM", 5.0);
+	public static final double OTHER_INTENSITY_PARAM = getDoubleProperty("OTHER_INTENSITY_PARAM", 3.22);
 
-	public static final double IRRIG_COST_SCALE_FACTOR = getDoubleProperty("IRRIG_COST_SCALE_FACTOR", 0.02);
+	public static final double IRRIG_COST_SCALE_FACTOR = getDoubleProperty("IRRIG_COST_SCALE_FACTOR", 0.01);
 	public static final double FERTILISER_COST_PER_T = getDoubleProperty("FERTILISER_COST_PER_T", 0.87 * 1.4 * 2); // £900/t N *  1.4$/£ * 2NPK/N
 	public static final double FERTILISER_MAX_COST = FERTILISER_COST_PER_T * MAX_FERT_AMOUNT/1000;
 	
@@ -182,6 +182,5 @@ public class ModelConfig {
 	public static final boolean DEBUG_LIMIT_COUNTRIES = getBooleanProperty("DEBUG_LIMIT_COUNTRIES", false);
 	public static final Object DEBUG_COUNTRY_NAME = getProperty("DEBUG_COUNTRY_NAME", "United States of America");
 	public static final double PASTURE_MAX_IRRIGATION_RATE = getDoubleProperty("DEFAULT_MAX_IRRIGATION_RATE", 50.0); // shouldn't need this but some areas crops don't have a value, but was causing them to be selected
-	public static int NUM_CALIBRATION_ITERATIONS = getIntProperty("NUM_CALIBRATION_ITERATIONS", 1);
 
 }
\ No newline at end of file
diff --git a/src/ac/ed/lurg/ModelMain.java b/src/ac/ed/lurg/ModelMain.java
index ff351892668b72c492e4a5eb9a4336f88a9ec68d..bc1e5aea6d417f2062af5a797259cb1d0e828d21 100644
--- a/src/ac/ed/lurg/ModelMain.java
+++ b/src/ac/ed/lurg/ModelMain.java
@@ -322,7 +322,7 @@ public class ModelMain {
 				if (item == null)
 					return null;
 
-				return item.getLandCoverArea(lcType);
+				return item.getLandCoverFract(lcType);
 			}
 		}.writeOutput();
 	}
@@ -339,8 +339,18 @@ public class ModelMain {
 		Collection<CountryAgent> countryAgents = new HashSet<CountryAgent>();
 
 		RasterSet<LandCoverItem> initLC = getInitialLandCover();
-		Map<CompositeCountry, Map<CropType, CropUsageData>> cropUsageDataMap = new CropUsageReader(compositeCountryManager).getCommodityData();
 		
+		new RasterOutputer<LandCoverItem>(initLC, "InitialCropland") {
+			@Override
+			public Double getValue(RasterKey location) {
+				LandCoverItem item = results.get(location);
+				if (item == null)
+					return null;
+				return item.getLandCoverFract(LandCoverType.CROPLAND);
+			}
+		}.writeOutput();
+		
+		Map<CompositeCountry, Map<CropType, CropUsageData>> cropUsageDataMap = new CropUsageReader(compositeCountryManager).getCommodityData();
 
 		for (CompositeCountry cc : countryGrouping) {
 
diff --git a/src/ac/ed/lurg/landuse/LandUseItem.java b/src/ac/ed/lurg/landuse/LandUseItem.java
index bcf827c2380fb27357d8617aa290b04899508311..9b16b04052c619f756b0fb87ef3843f1a1a2b33a 100644
--- a/src/ac/ed/lurg/landuse/LandUseItem.java
+++ b/src/ac/ed/lurg/landuse/LandUseItem.java
@@ -184,6 +184,10 @@ public class LandUseItem implements InterpolatingRasterItem<LandUseItem> {
 		return d == null ? 0.0 : d;
 	}
 	
+	public double getLandCoverFract(LandCoverType c) {
+		return getLandCoverArea(c) / getTotalLandCoverArea();
+	}
+	
 	public void setLandCoverArea(LandCoverType c, double d) {
 		if (Double.isNaN(d) || Double.isInfinite(d))
 			throw new RuntimeException("AreasItem for " + c + " is " + d);