diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java
index 6f7a972..ffa8d5b 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java
@@ -29,6 +29,7 @@ public class HistoryBrowser extends JPanel {
     private RelationMemberListViewer relationMemberListViewer;
     private CoordinateInfoViewer coordinateInfoViewer;
     private JTabbedPane tpViewers;
+    private VersionTable versionTable;
 
     /**
      * embedds table in a {@see JScrollPane}
@@ -52,8 +53,8 @@ public class HistoryBrowser extends JPanel {
         JPanel pnl = new JPanel();
         pnl.setLayout(new BorderLayout());
 
-        VersionTable tbl = new VersionTable(model);
-        pnl.add(embeddInScrollPane(tbl), BorderLayout.CENTER);
+        versionTable = new VersionTable(model);
+        pnl.add(embeddInScrollPane(versionTable), BorderLayout.CENTER);
         return pnl;
     }
 
@@ -125,6 +126,7 @@ public class HistoryBrowser extends JPanel {
      */
     public void populate(History history) {
         model.setHistory(history);
+        versionTable.updateSelection();
 
         tpViewers.removeAll();
 
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
index 4614c68..335f000 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
@@ -173,16 +173,22 @@ public class HistoryBrowserModel extends Observable implements LayerChangeListen
     public void setHistory(History history) {
         this.history = history;
         if (history.getNumVersions() > 0) {
-            current = history.getEarliest();
-            reference = history.getEarliest();
-            setLatest(null);
+            HistoryOsmPrimitive newLatest = null;
             if (getEditLayer() != null) {
                 OsmPrimitive p = getEditLayer().data.getPrimitiveById(history.getId(), history.getType());
                 if (canShowAsLatest(p)) {
-                    HistoryOsmPrimitive latest = new HistoryPrimitiveBuilder().build(p);
-                    setLatest(latest);
+                    newLatest = new HistoryPrimitiveBuilder().build(p);
                 }
             }
+            if (newLatest == null) {
+                current = history.getLatest();
+                int prevIndex = history.getNumVersions() - 2;
+                reference = prevIndex < 0 ? history.getEarliest() : history.get(prevIndex);
+            } else {
+                reference = history.getLatest();
+                current = newLatest;
+            }
+            setLatest(newLatest);
         }
         initTagTableModels();
         fireModelChange();
diff --git a/src/org/openstreetmap/josm/gui/history/VersionTable.java b/src/org/openstreetmap/josm/gui/history/VersionTable.java
index 603f26a..41bc66f 100644
--- a/src/org/openstreetmap/josm/gui/history/VersionTable.java
+++ b/src/org/openstreetmap/josm/gui/history/VersionTable.java
@@ -94,6 +94,11 @@ public class VersionTable extends JTable implements Observer{
         }
     }
 
+    public void updateSelection() {
+        final int row = getVersionTableModel().getRowCount() - 1;
+        setRowSelectionInterval(row, row);
+    }
+
     class PopupMenuTrigger extends MouseAdapter {
         @Override
         public void mousePressed(MouseEvent e) {
