Index: /applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java
===================================================================
--- /applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java	(revision 29550)
+++ /applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java	(revision 29551)
@@ -3,4 +3,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.net.HttpURLConnection;
 import java.util.Arrays;
 import java.util.Collections;
@@ -34,4 +35,5 @@
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.MultiFetchServerObjectReader;
+import org.openstreetmap.josm.io.OsmApiException;
 import org.openstreetmap.josm.io.OsmTransferException;
 
@@ -186,5 +188,25 @@
                 for (HistoryOsmPrimitive entry : collection) {
                     PrimitiveId id = entry.getPrimitiveId();
-                    rdr.readObject(id, cds.getEarliestVersion(id)-1, progressMonitor.createSubTaskMonitor(1, true));
+                    int version = cds.getEarliestVersion(id)-1;
+                    boolean readOK = false;
+                    while (!readOK && version >= 1) {
+                        try {
+                            rdr.readObject(id, version, progressMonitor.createSubTaskMonitor(1, true));
+                            readOK = true;
+                        } catch (OsmApiException e) {
+                            if (e.getResponseCode() != HttpURLConnection.HTTP_FORBIDDEN) {
+                                throw e;
+                            }
+                            String message = "Version "+version+" of "+id+" is unauthorized";
+                            if (version > 1) {
+                                message += ", requesting previous one";
+                            }
+                            Main.info(message);
+                            version--;
+                        }
+                    }
+                    if (!readOK) {
+                        Main.warn("Cannot retrieve any previous version of "+id);
+                    }
                     if (progressMonitor.isCanceled()) return;
                 }
