diff --git a/src/ac/ed/lurg/ModelMain.java b/src/ac/ed/lurg/ModelMain.java
index 54c1b213683e7cade9c4544cbedcdf1845e88c70..32621d3f96913c677e0c66c94a68c849b1dcd754 100644
--- a/src/ac/ed/lurg/ModelMain.java
+++ b/src/ac/ed/lurg/ModelMain.java
@@ -65,8 +65,15 @@ public class ModelMain {
 
 	/* run the model */
 	private void run() {
-		for (int i = ModelConfig.START_TIMESTEP; i <= ModelConfig.END_TIMESTEP; i++)
-			doTimestep(i);
+		for (int i = ModelConfig.START_TIMESTEP; i <= ModelConfig.END_TIMESTEP; i++) {
+			try {
+				doTimestep(i);
+			}
+			catch (Exception e) {
+				LpjgOutputer.writeMarkerFile(ModelConfig.BASE_YEAR + i, true);
+				throw new RuntimeException(e);
+			}
+		}
 	}
 
 	private void doTimestep(int timestep) {
diff --git a/src/ac/ed/lurg/output/LpjgOutputer.java b/src/ac/ed/lurg/output/LpjgOutputer.java
index 72e08c80e9e3fc6b450767622e54cfec336855c6..571353493db74128394dd47b4a1ee09eaa669c0b 100644
--- a/src/ac/ed/lurg/output/LpjgOutputer.java
+++ b/src/ac/ed/lurg/output/LpjgOutputer.java
@@ -33,22 +33,29 @@ public class LpjgOutputer {
 	}
 
 	public void writeOutput() {
-		String outputDirName = ModelConfig.OUTPUT_DIR + File.separator + year;
+		File outputDir = getOutputDir(year);
+
+		writeLandCoverAndCrop(outputDir);
+		writeIntensity(outputDir);
+		writeMarkerFile(year, false);
+	}
+
+	private static File getOutputDir(int yr) {
+		String outputDirName = ModelConfig.OUTPUT_DIR + File.separator + yr;
 		File outputDir = new File(outputDirName);
 		outputDir.mkdirs();
-
-		writeLandCoverAndCrop(outputDirName);
-		writeIntensity(outputDirName);
-		writeMarkerFile(outputDirName, false);
+		return outputDir;
 	}
 
-	private void writeIntensity(String outputDirName) {
+	private void writeIntensity(File outputDir) {
 		// TODO Auto-generated method stub
 		
 	}
 
-	private void writeMarkerFile(String outputDirName, boolean errorStatus) {
-		File markerFile = new File(outputDirName + File.separator + (errorStatus ? "error" : "done"));
+	public static void writeMarkerFile(int year, boolean errorStatus) {
+		File outputDir = getOutputDir(year);
+
+		File markerFile = new File(outputDir.getPath() + File.separator + (errorStatus ? "error" : "done"));
 		
 		try {
 			if (!markerFile.exists())
@@ -60,17 +67,17 @@ public class LpjgOutputer {
 		}	
 	}
 
-	public void writeLandCoverAndCrop(String outputDir) {
+	public void writeLandCoverAndCrop(File outputDir) {
 		BufferedWriter landCoverWriter = null;
 		BufferedWriter cropFractWriter = null;
 
 		try {
-			String landCoverFileName = outputDir + File.separator + "LandCoverFract.txt";
+			String landCoverFileName = outputDir.getPath() + File.separator + "LandCoverFract.txt";
 			landCoverWriter = new BufferedWriter(new FileWriter(landCoverFileName, false));
 			landCoverWriter.write("Lon Lat CROPLAND PASTURE NATURAL BARREN");
 			landCoverWriter.newLine();
 
-			String cropFractionFileName = outputDir + File.separator + "CropFract.txt";
+			String cropFractionFileName = outputDir.getPath() + File.separator + "CropFract.txt";
 			cropFractWriter = new BufferedWriter(new FileWriter(cropFractionFileName, false));
 			cropFractWriter.write("Lon Lat TeWWirr TeSWirr TeCoirr TrRiirr");
 			cropFractWriter.newLine();
diff --git a/src/ac/sac/raster/AbstractTabularRasterReader.java b/src/ac/sac/raster/AbstractTabularRasterReader.java
index fe20b04397bfbb27b822ea3ab2fbb95db101eafc..03988c244788a6d24476e62cb207e58e5c189f25 100644
--- a/src/ac/sac/raster/AbstractTabularRasterReader.java
+++ b/src/ac/sac/raster/AbstractTabularRasterReader.java
@@ -40,7 +40,6 @@ public abstract class AbstractTabularRasterReader<D extends RasterItem> {
 		return headertokens;
 	}
 	
-	
 	public RasterSet<D> getRasterDataFromFile(String filename) {
 		long startTime = System.currentTimeMillis();