Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 385)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 386)
@@ -99,4 +99,5 @@
 				// Insert the node into all the nearby way segments
 				List<WaySegment> wss = Main.map.mapView.getNearestWaySegments(e.getPoint());
+				System.out.println(wss);
 				Map<Way, List<Integer>> insertPoints = new HashMap<Way, List<Integer>>();
 				for (WaySegment ws : wss) {
Index: trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 385)
+++ trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 386)
@@ -8,4 +8,5 @@
 import java.util.List;
 import java.util.ArrayList;
+import java.util.LinkedList;
 
 import javax.swing.JComponent;
@@ -154,5 +155,5 @@
 	 */
 	public final List<WaySegment> getNearestWaySegments(Point p) {
-		TreeMap<Double, WaySegment> nearest = new TreeMap<Double, WaySegment>();
+		TreeMap<Double, List<WaySegment>> nearest = new TreeMap<Double, List<WaySegment>>();
 		for (Way w : Main.ds.ways) {
 			if (w.deleted)
@@ -175,5 +176,12 @@
 				double perDist = a-(a-b+c)*(a-b+c)/4/c; // perpendicular distance squared
 				if (perDist < 100 && a < c+100 && b < c+100) {
-					nearest.put(perDist, new WaySegment(w, i));
+					List<WaySegment> l;
+					if (nearest.containsKey(perDist)) {
+						l = nearest.get(perDist);
+					} else {
+						l = new LinkedList<WaySegment>();
+						nearest.put(perDist, l);
+					}
+					l.add(new WaySegment(w, i));
 				}
 
@@ -181,5 +189,9 @@
 			}
 		}
-		return new ArrayList<WaySegment>(nearest.values());
+		ArrayList<WaySegment> nearestList = new ArrayList<WaySegment>();
+		for (List<WaySegment> wss : nearest.values()) {
+			nearestList.addAll(wss);
+		}
+		return nearestList;
 	}
 
