Index: trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 19549)
+++ trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 19550)
@@ -37,4 +37,5 @@
 import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
@@ -279,7 +280,11 @@
         List<Future<?>> result = new ArrayList<>();
         for (final DownloadTask task : tasks) {
+            DownloadParams currentParams = settings;
+            if (task.providesOldData() && !settings.isNewLayer()) {
+                currentParams = GuiHelper.runInEDTAndWaitAndReturn(() -> confirmNoNewLayer(settings, url));
+            }
             try {
                 task.setZoomAfterDownload(zoomToData);
-                result.add(MainApplication.worker.submit(new PostDownloadHandler(task, task.loadUrl(settings, url,
+                result.add(MainApplication.worker.submit(new PostDownloadHandler(task, task.loadUrl(currentParams, url,
                         new PleaseWaitProgressMonitor(tr("Download data"))))));
             } catch (IllegalArgumentException e) {
@@ -288,4 +293,15 @@
         }
         return Collections.unmodifiableList(result);
+    }
+
+    private static DownloadParams confirmNoNewLayer(DownloadParams originalParams, String url) {
+        if (ConditionalOptionPaneUtil.showConfirmationDialog("open-location-action.confirm-no-new-layer",
+                MainApplication.getMainFrame(),
+                tr("Do you want to create a new layer for {0}?<br>You may be mixing old and new data otherwise!", url),
+                tr("No new layer"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, JOptionPane.YES_OPTION)
+        ) {
+            return new DownloadParams(originalParams).withNewLayer(true);
+        }
+        return originalParams;
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java	(revision 19549)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java	(revision 19550)
@@ -87,4 +87,9 @@
     }
 
+    @Override
+    public boolean providesOldData() {
+        return true;
+    }
+
     /**
      * OsmChange download task.
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadParams.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadParams.java	(revision 19549)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadParams.java	(revision 19550)
@@ -16,4 +16,20 @@
     private DownloadPolicy downloadPolicy;
     private UploadPolicy uploadPolicy;
+
+    public DownloadParams() {
+        // Do nothing -- just make this constructor visible
+    }
+
+    /**
+     * Clone another {@link DownloadParams}
+     * @param other The download parameters to clone
+     */
+    public DownloadParams(DownloadParams other) {
+        this.newLayer = other.newLayer;
+        this.layerName = other.layerName;
+        this.locked = other.locked;
+        this.downloadPolicy = other.downloadPolicy;
+        this.uploadPolicy = other.uploadPolicy;
+    }
 
     /**
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java	(revision 19549)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java	(revision 19550)
@@ -155,4 +155,14 @@
 
     /**
+     * If this task provides potentially old data, this should return {@code true}. If so, it would be a good decision
+     * to prompt users to verify if they want the data to be downloaded to the current layer.
+     * @return {@code true} if the data could be old.
+     * @since xxx
+     */
+    default boolean providesOldData() {
+        return false;
+    }
+
+    /**
      * Cancels the asynchronous download task.
      *
