Index: /applications/editors/josm/plugins/smed2/jtile/src/jtile/Jtile.java
===================================================================
--- /applications/editors/josm/plugins/smed2/jtile/src/jtile/Jtile.java	(revision 30406)
+++ /applications/editors/josm/plugins/smed2/jtile/src/jtile/Jtile.java	(revision 30407)
@@ -17,4 +17,5 @@
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.HashMap;
 
 import org.apache.batik.transcoder.TranscoderInput;
@@ -30,6 +31,7 @@
 	static int ytile;
 	static ArrayList<String> send;
+	static HashMap<String, Boolean> deletes;
 
-	public static void tile(int zoom, int dxy, int xn, int yn) throws Exception {
+	static void tile(int zoom, int dxy, int xn, int yn) throws Exception {
 
 		trans = new PNGTranscoder();
@@ -47,5 +49,7 @@
 			int xdir = (scale * xtile) + xn;
 			int ynam = (scale * ytile) + yn;
-			send.add("put " + dstdir + zoom + "/" + xdir + "/" + ynam + ".png" + " cache/tiles-" + zoom + "-" + xdir + "-" + ynam + ".png");
+			String dstnam = dstdir + zoom + "/" + xdir + "/" + ynam + ".png";
+			deletes.remove(dstnam);
+			send.add("put " + dstnam + " cache/tiles-" + zoom + "-" + xdir + "-" + ynam + ".png");
 			File ofile = new File(dstdir + "/" + zoom + "/" + xdir + "/");
 			ofile.mkdirs();
@@ -72,4 +76,24 @@
 	}
 
+	static void clean(int zoom, int xn, int yn) throws Exception {
+		
+		int scale = (int) Math.pow(2, zoom - 12);
+		int xdir = (scale * xtile) + xn;
+		int ynam = (scale * ytile) + yn;
+		String delnam = dstdir + zoom + "/" + xdir + "/" + ynam + ".png";
+		File delfile = new File(delnam);
+		if (delfile.exists()) {
+			deletes.put(delnam, true);
+			delfile.delete();
+		}
+		if ((zoom < 18)) {
+			for (int x = 0; x < 2; x++) {
+				for (int y = 0; y < 2; y++) {
+					clean((zoom + 1), (xn * 2 + x), (yn * 2 + y));
+				}
+			}
+		}
+	}
+	
 	public static void main(String[] args) throws Exception {
 		srcdir = args[0];
@@ -78,4 +102,6 @@
 		ytile = Integer.parseInt(args[3]);
 		send = new ArrayList<String>();
+		deletes = new HashMap<String, Boolean>();
+		clean(12, 0, 0);
 		tile(12, 256, 0, 0);
 		if (send.size() > 0) {
@@ -83,4 +109,7 @@
 			for (String str : send) {
 				writer.println(str);
+			}
+			for (String del : deletes.keySet()) {
+				writer.println("rm " + del);
 			}
 			writer.close();
