Index: src/uk/me/parabola/mkgmap/reader/osm/SeaGenerator.java
===================================================================
--- src/uk/me/parabola/mkgmap/reader/osm/SeaGenerator.java	(revision 4467)
+++ src/uk/me/parabola/mkgmap/reader/osm/SeaGenerator.java	(working copy)
@@ -1137,17 +1137,24 @@
 	}
 
 	private static void addCorners(Way w, Area tileBounds, double hit, double hNext) {
-		if (hit != hNext) {
-			int startEdge = (int) hit;
-			int endEdge = (int) hNext;
-			if (endEdge < startEdge)
-				endEdge += 4;
+		Coord p;
+		int d = Double.compare(hit, hNext);
+		if (d < 0) {
 			log.info("joining: ", hit, hNext);
-			for (int i = startEdge; i < endEdge; i++) {
-				int edge = i < 4 ? i : i - 4;
-				Coord p = getPoint(tileBounds, edge + 1.0);
+			for (int i = (int) hit; i < (int) hNext; i++) {
+				p = getPoint(tileBounds, i + 1.0);
 				w.addPointIfNotEqualToLastPoint(p);
 			}
+		} else if (d > 0) {
+			log.info("joining: ", hit, hNext);
+			for (int i = (int) hit; i < 4; i++) {
+				p = getPoint(tileBounds, i + 1.0);
+				w.addPointIfNotEqualToLastPoint(p);
+			}
+			for (int i = 0; i < (int) hNext; i++) {
+				p = getPoint(tileBounds, i + 1.0);
+				w.addPointIfNotEqualToLastPoint(p);
+			}
 		}
 		w.addPointIfNotEqualToLastPoint(getPoint(tileBounds, hNext));
 	}
