Index: trunk/src/org/openstreetmap/josm/data/osm/history/History.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/history/History.java	(revision 17886)
+++ trunk/src/org/openstreetmap/josm/data/osm/history/History.java	(revision 17887)
@@ -7,4 +7,5 @@
 import java.util.Comparator;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -190,4 +191,23 @@
 
     /**
+     * Replies the history primitive which changed the given key.
+     * @param version the version
+     * @param key the OSM key
+     * @return the history primitive which changed the given key
+     */
+    public HistoryOsmPrimitive getWhichChangedTag(long version, String key) {
+        HistoryOsmPrimitive primitive = getByVersion(version);
+        if (primitive == null) {
+            return null;
+        }
+        for (int i = versions.indexOf(primitive); i > 0; i--) {
+            if (!Objects.equals(versions.get(i).get(key), versions.get(i - 1).get(key))) {
+                return versions.get(i);
+            }
+        }
+        return versions.get(0);
+    }
+
+    /**
      * Replies the history primitive at given <code>date</code>. null,
      * if no such primitive exists.
Index: trunk/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java	(revision 17886)
+++ trunk/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java	(revision 17887)
@@ -7,7 +7,11 @@
 import javax.swing.JLabel;
 import javax.swing.JTable;
+import javax.swing.SwingConstants;
 import javax.swing.table.TableCellRenderer;
 
+import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 /**
@@ -43,4 +47,5 @@
 
         String text = "";
+        String tooltip = null;
         if (model.hasTag(key)) {
             switch(column) {
@@ -53,4 +58,10 @@
                 text = model.getValue(key);
                 break;
+            case TagTableColumnModel.COLUMN_VERSION:
+                HistoryOsmPrimitive primitive = model.getWhichChangedTag(key);
+                if (primitive != null) {
+                    text = "v" + primitive.getVersion();
+                    tooltip = tr("Key ''{0}'' was changed in version {1}", key, primitive.getVersion());
+                }
             default: // Do nothing
             }
@@ -58,5 +69,6 @@
 
         setText(text);
-        setToolTipText(text);
+        setToolTipText(tooltip != null ? tooltip : text);
+        setHorizontalAlignment(column == TagTableColumnModel.COLUMN_VERSION ? SwingConstants.TRAILING : SwingConstants.LEADING);
         TwoColumnDiff.Item.DiffItemType diffItemType = model.getDiffItemType(key, column == TagTableColumnModel.COLUMN_VALUE);
         GuiHelper.setBackgroundReadable(this, diffItemType.getColor(isSelected, table.hasFocus()));
Index: trunk/src/org/openstreetmap/josm/gui/history/TagTableColumnModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/TagTableColumnModel.java	(revision 17886)
+++ trunk/src/org/openstreetmap/josm/gui/history/TagTableColumnModel.java	(revision 17887)
@@ -14,4 +14,5 @@
     protected static final int COLUMN_KEY = 0;
     protected static final int COLUMN_VALUE = 1;
+    protected static final int COLUMN_VERSION = 2;
 
     /**
@@ -25,14 +26,20 @@
         TagTableCellRenderer renderer = new TagTableCellRenderer();
 
-        // column 0 - Key
-        TableColumn col = new TableColumn(0);
+        TableColumn col = new TableColumn(COLUMN_KEY);
         col.setHeaderValue(tr("Key"));
         col.setCellRenderer(renderer);
+        col.setPreferredWidth(100);
         addColumn(col);
 
-        // column 1 - Value
-        col = new TableColumn(1);
+        col = new TableColumn(COLUMN_VALUE);
         col.setHeaderValue(tr("Value"));
         col.setCellRenderer(renderer);
+        col.setPreferredWidth(100);
+        addColumn(col);
+
+        col = new TableColumn(COLUMN_VERSION);
+        col.setHeaderValue(tr("Since"));
+        col.setCellRenderer(renderer);
+        col.setPreferredWidth(10);
         addColumn(col);
     }
Index: trunk/src/org/openstreetmap/josm/gui/history/TagTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/TagTableModel.java	(revision 17886)
+++ trunk/src/org/openstreetmap/josm/gui/history/TagTableModel.java	(revision 17887)
@@ -84,4 +84,16 @@
 
     /**
+     * Returns the history primitive which changed the given key.
+     * @param key the OSM key
+     * @return the history primitive which changed the given key
+     */
+    public HistoryOsmPrimitive getWhichChangedTag(String key) {
+        HistoryOsmPrimitive primitive = model.getPointInTime(pointInTimeType);
+        if (primitive == null)
+            return null;
+        return model.getHistory().getWhichChangedTag(primitive.getVersion(), key);
+    }
+
+    /**
      * Determines if a tag exists in the opposite point in time for the given key.
      * @param key tag key
@@ -142,5 +154,5 @@
     @Override
     public int getColumnCount() {
-        return 2;
+        return 3;
     }
 
