diff --git a/src/ac/ed/lurg/ModelMain.java b/src/ac/ed/lurg/ModelMain.java
index 9efa25d468712b8ca5cceb67278def0cfbc33bce..b3d1cc80106e11131239c7cafb31d6b15082fef3 100644
--- a/src/ac/ed/lurg/ModelMain.java
+++ b/src/ac/ed/lurg/ModelMain.java
@@ -848,7 +848,9 @@ public class ModelMain {
 		RasterSet<LandUseItem> landUseRaster = new RasterSet<LandUseItem>(initialLC.getHeaderDetails());
 		
 		for (Map.Entry<RasterKey, LandCoverItem> entry : initialLC.entrySet()) {
-			landUseRaster.put(entry.getKey(), new LandUseItem(entry.getValue()));
+			if (entry.getValue().getTotalArea() > 0) {
+				landUseRaster.put(entry.getKey(), new LandUseItem(entry.getValue()));
+			}
 		}
 
 		return landUseRaster;
diff --git a/src/ac/ed/lurg/landuse/InitProtectedAreasReader.java b/src/ac/ed/lurg/landuse/InitProtectedAreasReader.java
index 24774e431c12c18b7fe50c6e5c3e859588454a71..3ddc4ae2917c1cb1f5bc46cf27cafb9f83739dfc 100644
--- a/src/ac/ed/lurg/landuse/InitProtectedAreasReader.java
+++ b/src/ac/ed/lurg/landuse/InitProtectedAreasReader.java
@@ -10,9 +10,9 @@ public class InitProtectedAreasReader extends AbstractRasterReader<LandCoverItem
 
 	@Override
 	public void setData(LandCoverItem lcData, String token) {
-		if (!"nan".equals(token)) {	
-			double protFrac = Double.parseDouble(token);
-			lcData.setProtectedFraction(protFrac);
+		double value = Double.parseDouble(token);
+		if (value >= 0) { // no data is -9999
+			lcData.setProtectedFraction(value);
 		}
 	}	
 }
diff --git a/src/ac/ed/lurg/landuse/LandUseItem.java b/src/ac/ed/lurg/landuse/LandUseItem.java
index daa7afa0cfef11c86941a9f21a1ffdbf139a4552..5996162d1cacd3c3750f7dfbd88137387ef79cfa 100644
--- a/src/ac/ed/lurg/landuse/LandUseItem.java
+++ b/src/ac/ed/lurg/landuse/LandUseItem.java
@@ -269,7 +269,7 @@ public class LandUseItem implements InterpolatingRasterItem<LandUseItem>, Serial
 		area = Math.min(area, fromArea);
 
 		// Update unmanaged forest fraction (increases if converting from managed forest, decreased otherwise)
-		if (toKey.getLcType().equals(LandCoverType.NATURAL)) {
+		if (toKey.getLcType().equals(LandCoverType.NATURAL) && !fromKey.getLcType().equals(LandCoverType.NATURAL)) {
 			NaturalDetail naturalDetail = (NaturalDetail) getLandCoverDetail(toKey);
 			double prevUnmanForest = naturalDetail.getArea() * naturalDetail.getUnmanagedForestFraction();
 
diff --git a/src/ac/ed/lurg/landuse/ProtectedAreasReader.java b/src/ac/ed/lurg/landuse/ProtectedAreasReader.java
index 5f1b9c13c2832955c8008eea8e5f837b6a232a75..45b5dcf1ca18321d3b4f6b3e299344d7b80ac548 100644
--- a/src/ac/ed/lurg/landuse/ProtectedAreasReader.java
+++ b/src/ac/ed/lurg/landuse/ProtectedAreasReader.java
@@ -11,8 +11,9 @@ public class ProtectedAreasReader extends AbstractRasterReader<ProtectedAreaItem
 
 	@Override
 	public void setData(ProtectedAreaItem data, String token) {
-		if (!"nan".equals(token)) {	
-			data.setProtectedFraction(Double.parseDouble(token));
+		double value = Double.parseDouble(token);
+		if (value >= 0) { // no data is -9999
+			data.setProtectedFraction(value);
 		}
 	}	
 }
\ No newline at end of file