Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 1868)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 1869)
@@ -5,4 +5,5 @@
 
 import java.io.IOException;
+import java.util.Collection;
 import java.util.concurrent.Future;
 
@@ -17,4 +18,5 @@
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.download.DownloadDialog.DownloadTask;
+import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
@@ -57,4 +59,28 @@
         }
 
+        protected int getNumDataLayers() {
+            int count = 0;
+            if (Main.map == null) return 0;
+            if (Main.map.mapView == null) return 0;
+            Collection<Layer> layers = Main.map.mapView.getAllLayers();
+            for (Layer layer : layers) {
+                if (layer instanceof OsmDataLayer) {
+                    count++;
+                }
+            }
+            return count;
+        }
+
+        protected OsmDataLayer getFirstDataLayer() {
+            if (Main.map == null) return null;
+            if (Main.map.mapView == null) return null;
+            Collection<Layer> layers = Main.map.mapView.getAllLayers();
+            for (Layer layer : layers) {
+                if (layer instanceof OsmDataLayer)
+                    return (OsmDataLayer) layer;
+            }
+            return null;
+        }
+
         @Override protected void finish() {
             if (dataSet == null)
@@ -67,9 +93,18 @@
             }
             rememberDownloadedData(dataSet);
-            if (newLayer || getEditLayer() == null) {
+            int numDataLayers = getNumDataLayers();
+            if (newLayer || numDataLayers == 0 || (numDataLayers > 1 && getEditLayer() == null)) {
+                // the user explicitly wants a new layer, we don't have any layer at all
+                // or it is not clear which layer to merge to
+                //
                 OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
                 Main.main.addLayer(layer);
             } else {
-                getEditLayer().mergeFrom(dataSet);
+                OsmDataLayer target;
+                target = getEditLayer();
+                if (target == null) {
+                    target = getFirstDataLayer();
+                }
+                target.mergeFrom(dataSet);
             }
         }
