Index: /applications/editors/josm/plugins/seachartedit/src/panels/PanelS57.java
===================================================================
--- /applications/editors/josm/plugins/seachartedit/src/panels/PanelS57.java	(revision 31155)
+++ /applications/editors/josm/plugins/seachartedit/src/panels/PanelS57.java	(revision 31156)
@@ -65,5 +65,5 @@
 			tin.close();
 		}
-		map = new S57map();
+		map = new S57map(true);
 		MapBounds bounds = S57dec.decodeFile(in, map);
 
Index: /applications/editors/josm/plugins/seachartedit/src/panels/ShowFrame.java
===================================================================
--- /applications/editors/josm/plugins/seachartedit/src/panels/ShowFrame.java	(revision 31155)
+++ /applications/editors/josm/plugins/seachartedit/src/panels/ShowFrame.java	(revision 31156)
@@ -41,5 +41,5 @@
 			id = osm.getUniqueId();
 			feature = map.index.get(id);
-			showMap = new S57map();
+			showMap = new S57map(true);
 			showMap.nodes = map.nodes;
 			showMap.edges = map.edges;
Index: /applications/editors/josm/plugins/seachartedit/src/scedit/SCeditAction.java
===================================================================
--- /applications/editors/josm/plugins/seachartedit/src/scedit/SCeditAction.java	(revision 31155)
+++ /applications/editors/josm/plugins/seachartedit/src/scedit/SCeditAction.java	(revision 31156)
@@ -23,5 +23,7 @@
 import org.openstreetmap.josm.gui.MapView.EditLayerChangeListener;
 import org.openstreetmap.josm.gui.layer.*;
+import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.SelectionChangedListener;
+import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.*;
 import org.openstreetmap.josm.data.osm.event.*;
@@ -198,12 +200,41 @@
 
 	void makeMap() {
-		map = new S57map();
+		map = new S57map(true);
 		if (data != null) {
+			double minlat = 90;
+			double maxlat = -90;
+			double minlon = 180;
+			double maxlon = -180;
+			for (Bounds bounds : data.getDataSourceBounds()) {
+				if (bounds.getMinLat() < minlat) {
+					minlat = bounds.getMinLat();
+				}
+				if (bounds.getMaxLat() > maxlat) {
+					maxlat = bounds.getMaxLat();
+				}
+				if (bounds.getMinLon() < minlon) {
+					minlon = bounds.getMinLon();
+				}
+				if (bounds.getMaxLon() > maxlon) {
+					maxlon = bounds.getMaxLon();
+				}
+			}
+			map.addNode(1, maxlat, minlon);
+			map.addNode(2, minlat, minlon);
+			map.addNode(3, minlat, maxlon);
+			map.addNode(4, maxlat, maxlon);
+			map.bounds.minlat = Math.toRadians(minlat);
+			map.bounds.maxlat = Math.toRadians(maxlat);
+			map.bounds.minlon = Math.toRadians(minlon);
+			map.bounds.maxlon = Math.toRadians(maxlon);
 			for (Node node : data.getNodes()) {
-				map.addNode(node.getUniqueId(), node.getCoor().lat(), node.getCoor().lon());
-				for (Entry<String, String> entry : node.getKeys().entrySet()) {
-					map.addTag(entry.getKey(), entry.getValue());
-				}
-				map.tagsDone(node.getUniqueId());
+				LatLon coor = node.getCoor();
+				if (coor != null) {
+					map.addNode(node.getUniqueId(), coor.lat(), coor.lon());
+					for (Entry<String, String> entry : node.getKeys().entrySet()) {
+						map.addTag(entry.getKey(), entry.getValue());
+					}
+					map.tagsDone(node.getUniqueId());
+				}
 			}
 			for (Way way : data.getWays()) {
@@ -232,4 +263,5 @@
 				}
 			}
+			map.mapDone();
 		}
 	}
