diff --git a/modules/processes/mill/raster/3D b/modules/processes/mill/raster/3D
index ab55ce19f7b79dbf4933de55de7afa2e754b3c35..f37a28bf727dabd548caef37b2c047ee520e9132 100644
--- a/modules/processes/mill/raster/3D
+++ b/modules/processes/mill/raster/3D
@@ -303,7 +303,10 @@ function calculate_path_worker() {
       for (var x = 0; x < toolsize; ++x)
          for (var y = 0; y < toolsize; ++y) {
             var r = Math.sqrt((x-toolsize/2)*(x-toolsize/2)+(y-toolsize/2)*(y-toolsize/2))
-            tooloffset[y*toolsize+x] = 0
+            if (r <= toolsize/2)
+               tooloffset[y*toolsize+x] = 0
+            else
+               tooloffset[y*toolsize+x] = Number.MAX_VALUE
             }
       //
       // loop over lines
@@ -319,13 +322,25 @@ function calculate_path_worker() {
       dy = 0
       while (1) {
          //
-         // vectorize
+         // move to next point
          //
          xnext = xcur+dx
          ynext = ycur+dy
-         znext = Math.floor((map[ynext*w+xnext]-zmax)*w/(xmax-xmin))
          if (ynext <= 0)
+            //
+            // done
+            //
             break;
+         //
+         // find offset at next point
+         //
+         for (var x = 0; x < toolsize; ++x)
+            for (var y = 0; y < toolsize; ++y) {
+               znext = Math.floor((map[ynext*w+xnext]-zmax)*w/(xmax-xmin))
+               }
+         //
+         // vectorize
+         //
          dxcur = xcur-xstart
          dycur = ycur-ystart
          dzcur = zcur-zstart