diff --git a/src/ac/ed/lurg/landuse/LandCoverReader.java b/src/ac/ed/lurg/landuse/LandCoverReader.java
index d7113cde0bf8f2db1e92ee43aaca2b5eaf35d707..520dff75b5fb5c21e9f1eda933e8d3249e4c936a 100644
--- a/src/ac/ed/lurg/landuse/LandCoverReader.java
+++ b/src/ac/ed/lurg/landuse/LandCoverReader.java
@@ -26,7 +26,16 @@ public class LandCoverReader extends AbstractTabularRasterReader<LandCoverItem>
 		lcData.setLandCoverFract(LandCoverType.MANAGED_FOREST, getValueForCol(rowValues, "managed_forest"));
 		lcData.setLandCoverFract(LandCoverType.UNMANAGED_FOREST, getValueForCol(rowValues, "unmanaged_forest"));
 		lcData.setLandCoverFract(LandCoverType.BARREN, getValueForCol(rowValues, "barren"));
-		lcData.setLandCoverFract(LandCoverType.URBAN, getValueForCol(rowValues, "urban"));
-		
+		lcData.setLandCoverFract(LandCoverType.URBAN, getValueForCol(rowValues, "urban"));	
+	}
+	
+	@Override
+	protected int getXCol() {
+		return getColForName("lon");
+	}
+	
+	@Override
+	protected int getYCol() {
+		return getColForName("lat");
 	}
 }
diff --git a/src/ac/sac/raster/AbstractTabularRasterReader.java b/src/ac/sac/raster/AbstractTabularRasterReader.java
index 14b6cdf88412353d8b25f5506416ef904fc1baf7..83847b88d26770993e5f7d279d69f4fec0c194a5 100644
--- a/src/ac/sac/raster/AbstractTabularRasterReader.java
+++ b/src/ac/sac/raster/AbstractTabularRasterReader.java
@@ -17,6 +17,7 @@ public abstract class AbstractTabularRasterReader<D extends RasterItem> {
 	protected RasterSet<D> dataset;
 	private String delimiterRegex;
 	private int minColNum;
+	protected String[] dataColNames;
 
 	public AbstractTabularRasterReader (String delimiterRegex, int minColNum) {
 		this.delimiterRegex = delimiterRegex;
@@ -32,6 +33,14 @@ public abstract class AbstractTabularRasterReader<D extends RasterItem> {
 		return line.trim().split(delimiterRegex);
 	}
 	
+	protected int getXCol() {
+		return X_COL;
+	}
+	
+	protected int getYCol() {
+		return Y_COL;
+	}
+	
 	private String[] handleHeader(String[] headertokens) {
 		if (headertokens.length < minColNum) {
 			LogWriter.printlnError("Too few columns");
@@ -53,7 +62,7 @@ public abstract class AbstractTabularRasterReader<D extends RasterItem> {
 		try {
 			in = new BufferedReader(new FileReader(filename));
 			String line = in.readLine(); // read header
-			String[] dataColNames = handleHeader(parseLine(line));
+			dataColNames = handleHeader(parseLine(line));
 
 			while ((line=in.readLine()) != null) {
 				if (line.isEmpty()) // skip empty lines
@@ -62,8 +71,8 @@ public abstract class AbstractTabularRasterReader<D extends RasterItem> {
 				String[] tokens = parseLine(line);
 				
 				try {
-					double x = Double.parseDouble(tokens[X_COL]);
-					double y = Double.parseDouble(tokens[Y_COL]);
+					double x = Double.parseDouble(tokens[getXCol()]);
+					double y = Double.parseDouble(tokens[getYCol()]);
 				
 					Map<String, Double> rowValues = new HashMap<String, Double>(dataColNames.length);
 					for (int i=2; i<tokens.length; i++) {
@@ -103,6 +112,16 @@ public abstract class AbstractTabularRasterReader<D extends RasterItem> {
 		return dataset;
 	}
 	
+	protected int getColForName(String colName) {
+		String lowerColName = colName.toLowerCase();
+		int i=0;
+		for (; i<colName.length(); i++)
+			if (dataColNames[i].toLowerCase().equals(lowerColName))
+				return i;
+			
+		return Integer.MIN_VALUE;
+	}
+	
 	protected double getValueForCol(Map<String, Double> rowValues, String colName) {
 		Double d = rowValues.get(colName.toLowerCase());
 		if (d == null) {
diff --git a/src/ac/sac/raster/RasterSet.java b/src/ac/sac/raster/RasterSet.java
index 7bc26df3d43207af016a947c216bfff0fac1a2ca..f207da45264c613e82988b0f9864d03dcf31f9cf 100755
--- a/src/ac/sac/raster/RasterSet.java
+++ b/src/ac/sac/raster/RasterSet.java
@@ -67,7 +67,7 @@ public class RasterSet<D extends RasterItem> extends HashMap<RasterKey, D> {
 		int row = header.getNrows() - 1 - (int) Math.round((source_y - header.getYllCorner())/header.getYCellSize());
 	
 		if (row < 0 || col < 0) {
-			LogWriter.println("Got negative values");
+			LogWriter.println("Got negative row or col values: " + row + ", "+  col);
 		}
 		return new RasterKey(col, row);
 	}