diff --git a/src/org/openstreetmap/josm/tools/Geometry.java b/src/org/openstreetmap/josm/tools/Geometry.java
index b10ce47a16..d65d245589 100644
--- a/src/org/openstreetmap/josm/tools/Geometry.java
+++ b/src/org/openstreetmap/josm/tools/Geometry.java
@@ -1,6 +1,8 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools;
 
+import static org.openstreetmap.josm.data.projection.Ellipsoid.WGS84;
+
 import java.awt.geom.Area;
 import java.awt.geom.Line2D;
 import java.awt.geom.Path2D;
@@ -25,6 +27,7 @@ import org.openstreetmap.josm.command.ChangeNodesCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.ILatLon;
+import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.BBox;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.INode;
@@ -1555,6 +1558,30 @@ public final class Geometry {
         return smallest != Double.MAX_VALUE ? Math.sqrt(smallest) : Double.NaN;
     }
 
+    /**
+     * Create a new LatLon at a specified distance. Uses WGS84.
+     * This does not currently attempt to be hugely accurate. The actual location may be off
+     * depending upon the distance and the
+     *
+     * @param original The originating point
+     * @param angle The angle (from true north) in radians
+     * @param offset The distance to the new point in the current projection's units
+     * @return The location at the specified angle and distance from the originating point
+     * @since xxx
+     */
+    public static ILatLon getLatLonFrom(final ILatLon original, final double angle, final double offset) {
+        final double meterOffset = ProjectionRegistry.getProjection().getMetersPerUnit() * offset;
+        final double deltaLongitudeDegree = (Math.PI * WGS84.a * Math.cos(Math.toRadians(original.lat())))
+                / (180 * Math.sqrt(1 - WGS84.e2 * Math.pow(Math.sin(Math.toRadians(original.lat())), 2)));
+        final double deltaLatitudeDegree = (Math.PI * WGS84.a * (1 - WGS84.e2))
+                / (180 * Math.pow(1 - WGS84.e2 * Math.pow(Math.sin(original.lat()), 2), 1.5));
+        final double dx = meterOffset * Math.sin(angle);
+        final double dy = meterOffset * Math.cos(angle);
+        final double dLon = dx / deltaLongitudeDegree;
+        final double dLat = dy / deltaLatitudeDegree;
+        return new LatLon(original.lat() + dLat, original.lon() + dLon);
+    }
+
     /**
      * Calculate closest distance between a line segment s1-s2 and a point p
      * @param s1 start of segment
