Index: applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/Lakewalker.java
===================================================================
--- applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/Lakewalker.java	(revision 15953)
+++ applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/Lakewalker.java	(revision 15959)
@@ -290,6 +290,6 @@
     }
 
+        /*
     public ArrayList<double[]> douglasPeuckerNR(ArrayList<double[]> nodes, double epsilon){
-        /*
         command_stack = [(0, len(nodes) - 1)]
 
@@ -351,12 +351,12 @@
             return [nodes[0], nodes[-1]];
         }
+        return nodes;
+    }
         */
-        return nodes;
-    }
-
-    public ArrayList<double[]> douglasPeucker(ArrayList<double[]> nodes, double epsilon){
+
+    public ArrayList<double[]> douglasPeucker(ArrayList<double[]> nodes, double epsilon, int depth){
 
         // Check if node list is empty
-        if(nodes.size()<=1){
+        if(nodes.size()<=1 || depth > 500){
             return nodes;
         }
@@ -383,6 +383,6 @@
 
         if(farthest_dist > epsilon){
-            seg_a = douglasPeucker(sublist(nodes,0,farthest_node+1),epsilon);
-            seg_b = douglasPeucker(sublist(nodes,farthest_node,nodes.size()-1),epsilon);
+            seg_a = douglasPeucker(sublist(nodes,0,farthest_node+1),epsilon, depth+1);
+            seg_b = douglasPeucker(sublist(nodes,farthest_node,nodes.size()-1),epsilon,depth+1);
 
             new_nodes.addAll(seg_a);
Index: applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/LakewalkerApp.java
===================================================================
--- applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/LakewalkerApp.java	(revision 15953)
+++ applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/LakewalkerApp.java	(revision 15959)
@@ -48,5 +48,5 @@
         System.out.println("After vertex reduction, "+nodelist.size()+" nodes remain.");
 
-        nodelist = lw.douglasPeucker(nodelist, dp);
+        nodelist = lw.douglasPeucker(nodelist, dp, 0);
 
         System.out.println("After dp approximation, "+nodelist.size()+" nodes remain.");
Index: applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/LakewalkerException.java
===================================================================
--- applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/LakewalkerException.java	(revision 15953)
+++ applications/editors/josm/plugins/lakewalker/src/org/openstreetmap/josm/plugins/lakewalker/LakewalkerException.java	(revision 15959)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.lakewalker;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 class LakewalkerException extends Exception {
@@ -6,5 +8,5 @@
     public LakewalkerException(){
         super();
-        this.error = "An unknown error has occured";
+        this.error = tr("An unknown error has occurred");
     }
 
