diff --git a/Inst_eddies/Tests/Input/good_contour.txt b/Inst_eddies/Tests/Input/good_contour.txt
index edde4556102e6c151cda3c377238351683aea611..9f0246b11bdc0245014b75fad3ab6ef923a1c90d 100644
--- a/Inst_eddies/Tests/Input/good_contour.txt
+++ b/Inst_eddies/Tests/Input/good_contour.txt
@@ -1,5 +1,4 @@
 &MAIN_NML
- INSIDE_POINT=-0.7,0
+ INSIDE_POINT=-8.75,0.
 LEVEL=5
-STEP=2*0.08
-CORNER=-2,-2 /
+CORNER=-25.,-25. /
diff --git a/Inst_eddies/Tests/Input/good_contour_2.txt b/Inst_eddies/Tests/Input/good_contour_2.txt
index cbb59b81e703a8cafce4e104b34576ae19c9d3ef..6d7bd20375a42cf5eb1d9d3ff4c043323af85bec 100644
--- a/Inst_eddies/Tests/Input/good_contour_2.txt
+++ b/Inst_eddies/Tests/Input/good_contour_2.txt
@@ -1,3 +1,3 @@
-&MAIN_NML INSIDE_POINT=0.3,0,
+&MAIN_NML INSIDE_POINT=3.75,0,
 LEVEL=5
-corner = -2., -2., step = 0.08, 0.08 /
+corner = -25., -25. /
diff --git a/Inst_eddies/Tests/Input/no_good_contour.txt b/Inst_eddies/Tests/Input/no_good_contour.txt
index e255617d58ff2e19f989d9c8a8dc14dc5d004d03..5ae3c521721ba99b9eae329bb27625bebdd09b4a 100644
--- a/Inst_eddies/Tests/Input/no_good_contour.txt
+++ b/Inst_eddies/Tests/Input/no_good_contour.txt
@@ -1 +1 @@
-&MAIN_NML LEVEL=  5, corner = -2., -2., step = 0.08, 0.08 /
+&MAIN_NML LEVEL=  5, corner = -25., -25. /
diff --git a/Inst_eddies/Tests/Input/outside_points_1.csv b/Inst_eddies/Tests/Input/outside_points_1.csv
index b6fb92e03a056ce633a2016908c785f46972cfe4..7b7aeaa4cd562bf553f850b0203cf1a4e13f53fe 100644
--- a/Inst_eddies/Tests/Input/outside_points_1.csv
+++ b/Inst_eddies/Tests/Input/outside_points_1.csv
@@ -1,2 +1,2 @@
--0.5, -1.
-0.3, 0.
+-6.25, -12.5
+3.75, 0.
diff --git a/Inst_eddies/Tests/Input/outside_points_2.csv b/Inst_eddies/Tests/Input/outside_points_2.csv
index 3260f5c46ae34d044b7330056bf70098398c45ab..396d0790bcf28bb3037d0d80a3a5a422a1f27d62 100644
--- a/Inst_eddies/Tests/Input/outside_points_2.csv
+++ b/Inst_eddies/Tests/Input/outside_points_2.csv
@@ -1,2 +1,2 @@
--0.5, -1.
--0.7, 0.
+-6.25, -12.5
+-8.75, 0.
diff --git a/Inst_eddies/Tests/test_good_contour.f90 b/Inst_eddies/Tests/test_good_contour.f90
index 9099ce40e979099d6774b4bc9b8f3f13f81ebbf4..c0fe3888be663c1bd4f2e6d5ada6b4594cb91f1a 100644
--- a/Inst_eddies/Tests/test_good_contour.f90
+++ b/Inst_eddies/Tests/test_good_contour.f90
@@ -21,7 +21,6 @@ program test_good_contour
   real, allocatable:: Z(:, :)
   real:: inside_point(2) = [0., 0.]
   real, allocatable:: outside_points(:, :) ! (2, n_out)
-  real:: step(2) = [1., 1.]
   real:: corner(2) = [1., 1.]
   TYPE(shpfileobject) shphandle
   integer field_number, shape_number
@@ -29,7 +28,7 @@ program test_good_contour
   integer, allocatable:: dimids(:)
   character(len = 10):: varname = "z"
 
-  namelist /main_nml/ inside_point, level, step, corner, varname
+  namelist /main_nml/ inside_point, level, corner, varname
 
   !-------------------------------------------------------------------
 
@@ -70,7 +69,7 @@ program test_good_contour
      print *, outside_points(:, i)
   end do
 
-  c = good_contour(corner, step, z, level, inside_point, outside_points)
+  c = good_contour(corner, z, level, inside_point, outside_points)
 
   if (c%n_points /= 0) then
      call shp_create_03("test_good_contour", shpt_polygon, shphandle)
diff --git a/Inst_eddies/get_1_outerm.f90 b/Inst_eddies/get_1_outerm.f90
index ff651eb0080a8464c499aa70071abfaa7276b448..008afc2f1fbdc4e6d256b19cb845427ff3adbc11 100644
--- a/Inst_eddies/get_1_outerm.f90
+++ b/Inst_eddies/get_1_outerm.f90
@@ -41,13 +41,14 @@ contains
     ! 360 degrees.
 
     ! Libraries:
-    use contour_531, only: polyline
+    use contour_531, only: polyline, convert_to_reg_coord, convert_to_ind
     use jumble, only: assert
 
     use ccw_orient_m, only: ccw_orient
     use config_m, only: min_area
     use derived_types, only: ssh_contour, null_ssh_contour
     use good_contour_m, only: good_contour
+    use input_ssh_m, only: corner_whole => corner
     use spher_polyline_area_m, only: spher_polyline_area
 
     type(ssh_contour), intent(out):: out_cont
@@ -88,13 +89,20 @@ contains
     real, parameter:: precision = 5e-4 ! in m
     logical mask(size(ssh, 1), size(ssh, 2))
     integer n_max_cont ! >= 3
+    integer i
+    real corner_proj(2), coord_extr_proj(2)
+    real outside_points_proj(2, size(outside_points, 2))
 
     !-----------------------------------------------------------------
 
+    corner_proj = (corner - corner_whole) / step + 1.
+    coord_extr_proj = (coord_extr - corner_whole) / step + 1.
+    outside_points_proj = convert_to_ind(outside_points, corner_whole, step)
     n_max_cont = size(cont_list)
     n_cont = 0
-    cont_list(1)%polyline = good_contour(corner, step, ssh, innermost_level_2, &
-         coord_extr, outside_points)
+    cont_list(1)%polyline = convert_to_reg_coord(good_contour(corner_proj, &
+         ssh, innermost_level_2, coord_extr_proj, outside_points_proj), &
+         corner_whole, step)
 
     test_n_points: if (cont_list(1)%n_points == 0) then
        out_cont = null_ssh_contour()
@@ -106,8 +114,9 @@ contains
        level_try = merge(maxval(ssh, mask), minval(ssh, mask), cyclone)
        call assert(merge(level_try > level_good, level_try < level_good, &
             cyclone), "get_1_outerm level_try")
-       cont_list(2)%polyline = good_contour(corner, step, ssh, level_try, &
-            coord_extr, outside_points)
+       cont_list(2)%polyline = convert_to_reg_coord(good_contour(corner_proj, &
+            ssh, level_try, coord_extr_proj, outside_points_proj), &
+            corner_whole, step)
 
        if (cont_list(2)%n_points /= 0) then
           ! This can only happen if there are degenerate extrema
@@ -121,8 +130,10 @@ contains
 
           do while (abs(level_bad - level_good) > precision)
              level_try = (level_good + level_bad) / 2.
-             cont_list(n_cont + 1)%polyline = good_contour(corner, step, ssh, &
-                  level_try, coord_extr, outside_points)
+             cont_list(n_cont + 1)%polyline &
+                  = convert_to_reg_coord(good_contour(corner_proj, ssh, &
+                  level_try, coord_extr_proj, outside_points_proj), &
+                  corner_whole, step)
 
              if (cont_list(n_cont + 1)%n_points /= 0) then
                 cont_list(n_cont + 1)%ssh = level_try
diff --git a/Inst_eddies/good_contour.f90 b/Inst_eddies/good_contour.f90
index 856107a15f82d7b559942a9341999f7fe35be52d..9eb3e0b119660f1fc892c5c95aec4a00cde54725 100644
--- a/Inst_eddies/good_contour.f90
+++ b/Inst_eddies/good_contour.f90
@@ -4,7 +4,7 @@ module good_contour_m
 
 contains
 
-  type(polyline) function good_contour(corner, step, z, level, inside_point, &
+  type(polyline) function good_contour(corner, z, level, inside_point, &
        outside_points)
 
     ! Finds a contour in the plane, if it exists, which is closed,
@@ -20,8 +20,6 @@ contains
     use geometry, only: polygon_contains_point
 
     real, intent(in):: corner(:) ! (2) [x, y] corresponding to z(1, 1)
-    real, intent(in):: step(:) ! (2)
-
     real, intent(in):: z(:, :)
     ! We are assuming that significant values of z cannot be greater
     ! than zmax and that the missing value flag in z is greater than
@@ -48,7 +46,7 @@ contains
        n_out = 0
     end if
 
-    call find_contours_reg_grid(corner, step, z, level, contours, zmax)
+    call find_contours_reg_grid(corner, [1., 1.], z, level, contours, zmax)
     n_cont = size(contours)
     found_good_contour = .false.
     i = 1
diff --git a/Inst_eddies/set_max_speed.f90 b/Inst_eddies/set_max_speed.f90
index a9594985b7ffd10ab729ea617e9807269e6edd23..27a763b0f55437700775064d78378f785226019f 100644
--- a/Inst_eddies/set_max_speed.f90
+++ b/Inst_eddies/set_max_speed.f90
@@ -22,11 +22,13 @@ contains
     use jumble, only: rad_to_deg
     use shapelib, only: shpt_polygon
     use shapelib_03, only: shp_append_object_03, dbf_write_attribute_03
+    use contour_531, only: convert_to_reg_coord
 
     use ccw_orient_m, only: ccw_orient
     use complete_ssh_m, only: complete_ssh
     use derived_types, only: eddy, null_ssh_contour, ssh_contour, missing_speed
     use good_contour_m, only: good_contour
+    use input_ssh_m, only: corner_whole => corner
     use mean_speed_m, only: mean_speed
     use spher_polyline_area_m, only: spher_polyline_area
     use cont_list_m, only: write_cont_list, hshp_cont_list, ifield_ssh, &
@@ -71,16 +73,19 @@ contains
 
     real, allocatable:: speed(:) ! (n_cont) speed on the contour
     integer i, i_outer, ishape
+    real corner_proj(2), extr_coord_proj(2)
 
     !---------------------------------------------------------------
 
+    corner_proj = (corner - corner_whole) / step + 1.
+    extr_coord_proj = (extr_coord - corner_whole) / step + 1.
     i_outer = n_cont
     if (n_cont >= 2) call complete_ssh(cont_list%ssh, n_cont)
 
     ! Now find the contours associated to the new values of SSH:
     do i = i_outer + 1, n_cont
-       cont_list(i)%polyline = good_contour(corner, step, ssh, &
-            cont_list(i)%ssh, extr_coord)
+       cont_list(i)%polyline = convert_to_reg_coord(good_contour(corner_proj, &
+            ssh, cont_list(i)%ssh, extr_coord_proj), corner_whole, step)
     end do
 
     allocate(speed(n_cont))