Index: applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FDSettings.java
===================================================================
--- applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FDSettings.java	(revision 26448)
+++ applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FDSettings.java	(revision 26455)
@@ -23,4 +23,5 @@
     public double maxPointsPerKm;
     public int pkmBlockSize;
+    public boolean drawLastSegment;
     
     public void loadPrefs() {
@@ -37,4 +38,5 @@
         maxPointsPerKm = Main.pref.getDouble("fastdraw.maxpkm", 20);
         pkmBlockSize = Main.pref.getInteger("fastdraw.pkmblocksize", 10);
+        drawLastSegment = Main.pref.getBoolean("fastdraw.drawlastsegment", true);
     }
 
@@ -52,4 +54,5 @@
          Main.pref.putDouble("fastdraw.maxpkm",maxPointsPerKm);
          Main.pref.putInteger("fastdraw.pkmblocksize",pkmBlockSize);
+         Main.pref.put("fastdraw.drawlastsegment",drawLastSegment);
          try {Main.pref.save();} catch (IOException e) {
              System.err.println(tr("Can not save preferences"));
Index: applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java
===================================================================
--- applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(revision 26448)
+++ applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(revision 26455)
@@ -83,5 +83,5 @@
     private List<Node> oldNodes;
     
-    private final TreeSet set = new TreeSet();
+    private final TreeSet<Integer> set = new TreeSet<Integer>();
     private Timer timer;
   
@@ -242,4 +242,11 @@
                 }
             }
+            if (settings.drawLastSegment && !drawing && !shift && !line.wasSimplified()) {
+                // draw line to current point
+                g.setColor(lineColor);
+                Point lp=line.getLastPoint();
+                Point mp=Main.map.mapView.getMousePosition();
+                g.drawLine(lp.x,lp.y,mp.x,mp.y);
+            }
         }
     }
@@ -363,4 +370,5 @@
         int nearestIdx2=line.findClosestPoint(e.getPoint(),settings.maxDist);
         if (nearestIdx != nearestIdx2) {nearestIdx=nearestIdx2; updateCursor();needRepaint=true;}
+        if (settings.drawLastSegment) needRepaint=true;
         
         if (!drawing) {
@@ -433,10 +441,12 @@
             // more details
             e.consume();
-            changeEpsilon(settings.epsilonMult);
+            if (line.wasSimplified()) changeEpsilon(settings.epsilonMult);
+            else changeDelta(1/1.1);
         break;
         case KeyEvent.VK_UP:
             // less details
             e.consume();
-            changeEpsilon(1/settings.epsilonMult);
+            if (line.wasSimplified()) changeEpsilon(1/settings.epsilonMult);
+            else changeDelta(1.1);
         break;
         case KeyEvent.VK_ESCAPE:
@@ -576,4 +586,10 @@
     }
 
+    void changeDelta(double k) {
+        settings.minPixelsBetweenPoints*=k;
+        setStatusLine(tr("min distance={0} pixes",(int)settings.minPixelsBetweenPoints));
+        
+    }
+
     private void setStatusLine(String tr) {
         statusText=tr;
