Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 14074)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 14075)
@@ -73,4 +73,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitiveComparator;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.Tagged;
 import org.openstreetmap.josm.data.osm.UploadPolicy;
 import org.openstreetmap.josm.data.osm.Way;
@@ -747,5 +748,5 @@
                     trk.add(trkseg);
                 }
-                if (!n.isTagged()) {
+                if (!n.isTagged() || containsOnlyGpxTags(n)) {
                     doneNodes.add(n);
                 }
@@ -755,4 +756,13 @@
             gpxData.addTrack(new ImmutableGpxTrack(trk, trkAttr));
         });
+    }
+
+    private static boolean containsOnlyGpxTags(Tagged t) {
+        for (String key : t.getKeys().keySet()) {
+            if (!GpxConstants.WPT_KEYS.contains(key)) {
+                return false;
+            }
+        }
+        return true;
     }
 
Index: trunk/src/org/openstreetmap/josm/io/GpxWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxWriter.java	(revision 14074)
+++ trunk/src/org/openstreetmap/josm/io/GpxWriter.java	(revision 14075)
@@ -10,4 +10,5 @@
 import java.nio.charset.StandardCharsets;
 import java.util.Collection;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -28,4 +29,5 @@
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.date.DateUtils;
 
 /**
@@ -81,8 +83,8 @@
 
         out.println("<?xml version='1.0' encoding='UTF-8'?>");
-        out.println("<gpx version=\"1.1\" creator=\"JOSM GPX export\" xmlns=\"http://www.topografix.com/GPX/1/1\"\n" +
-                (hasExtensions ? String.format("    xmlns:josm=\"%s\"%n", JOSM_EXTENSIONS_NAMESPACE_URI) : "") +
-                "    xmlns:xsi=\""+XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI+"\" \n" +
-                "    xsi:schemaLocation=\"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd\">");
+        out.println("<gpx version=\"1.1\" creator=\"JOSM GPX export\" xmlns=\"http://www.topografix.com/GPX/1/1\"");
+        out.println((hasExtensions ? String.format("    xmlns:josm=\"%s\"%n", JOSM_EXTENSIONS_NAMESPACE_URI) : "") +
+                    "    xmlns:xsi=\""+XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI+"\"");
+        out.println("    xsi:schemaLocation=\"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd\">");
         indent = "  ";
         writeMetaData();
@@ -112,4 +114,9 @@
                 if (value != null) {
                     simpleTag(key, value);
+                } else {
+                    Object val = obj.get(key);
+                    if (val instanceof Date) {
+                        simpleTag(key, DateUtils.getGpxFormat().format(val));
+                    }
                 }
             }
