diff --git a/Common/derived_types.f90 b/Common/derived_types.f90
index e47ba15492b2a026f98508a56e3bda445aa08816..8590e9b153983f4318c976949cbc47966c809434 100644
--- a/Common/derived_types.f90
+++ b/Common/derived_types.f90
@@ -19,6 +19,11 @@ module derived_types
      type(ssh_contour) out_cont ! outermost contour
      type(ssh_contour) speed_cont ! contour with maximum average azimuthal speed
 
+     real innermost_level
+     ! SSH level of the innermost contour around each extremum, in
+     ! m. By construction, innermost_level < extremum for a maximum, >
+     ! extremum for a minimum.
+
      real max_speed
      ! Average of azimuthal speed on out_cont or speed_cont, in m
      ! s-1. Positive means counterclockwise circulation. If speed_cont
diff --git a/Inst_eddies/Tests/test_set_all_outerm.f90 b/Inst_eddies/Tests/test_set_all_outerm.f90
index 3336eb01124a7db2b2f7432c26d20f4dbf0c542b..236b782a94f6e5eefe1e90586c20fa14d64e9b6a 100644
--- a/Inst_eddies/Tests/test_set_all_outerm.f90
+++ b/Inst_eddies/Tests/test_set_all_outerm.f90
@@ -34,17 +34,12 @@ program test_set_all_outerm
   logical periodic ! grid is periodic in longitude
   TYPE(shpc_slice_handler) hshp_cyclo, hshp_anti
 
-  real, allocatable:: innermost_level(:) ! (s%number_extr)
-  ! SSH level of the innermost contour around each extremum, in
-  ! m. By construction, innermost_level < extremum for a maximum, >
-  ! extremum for a minimum.
-
   !--------------------------------------------------------------
 
   call config
   call input_ssh(corner, step, nlon, nlat, periodic, ssh, u, v)
-  call set_all_extr(s, innermost_level, step, periodic, ssh, corner)
-  call set_all_outerm(s, step, periodic, ssh, corner, innermost_level, &
+  call set_all_extr(s, step, periodic, ssh, corner)
+  call set_all_outerm(s, step, periodic, ssh, corner, &
        min_area = pi * (min_radius * 1e3)**2)
 
   do i = 1, s%number_extr
diff --git a/Inst_eddies/inst_eddies.f90 b/Inst_eddies/inst_eddies.f90
index 865eab67b7c597a3cd9e9d2e37f8e8ebdc803cb7..97b1a4ad954402b44e0c474736da6f8632070561 100644
--- a/Inst_eddies/inst_eddies.f90
+++ b/Inst_eddies/inst_eddies.f90
@@ -57,11 +57,6 @@ program inst_eddies
   ! latitude, in rad, of all the significant extrema, except the
   ! target extremum
 
-  real, allocatable:: innermost_level(:) ! (s%number_extr)
-  ! SSH level of the innermost contour around each extremum, in
-  ! m. By construction, innermost_level < extremum for a maximum, >
-  ! extremum for a minimum.
-
   logical exist
   real t0, t1 ! CPU times, in s
   integer:: date = 0, slice = 0
@@ -106,8 +101,8 @@ program inst_eddies
   write(unit, fmt = *) "CPU time for preamble, before computation:", t1 - t0, &
        "s"
   t0 = t1
-  call set_all_extr(s, innermost_level, step, periodic, ssh, corner)
-  call set_all_outerm(s, step, periodic, ssh, corner, innermost_level, &
+  call set_all_extr(s, step, periodic, ssh, corner)
+  call set_all_outerm(s, step, periodic, ssh, corner, &
        min_area = pi * (min_radius * 1e3)**2)
 
   ! Done with outermost contours, now let us take care of the
diff --git a/Inst_eddies/set_all_extr.f90 b/Inst_eddies/set_all_extr.f90
index 359f0a9ccdc77f078d4e1231f9009e8153f40df1..418fb10d35d0c2fb7849123d56ccdfdee404e237 100644
--- a/Inst_eddies/set_all_extr.f90
+++ b/Inst_eddies/set_all_extr.f90
@@ -4,7 +4,7 @@ module set_all_extr_m
 
 contains
 
-  subroutine set_all_extr(s, innermost_level, step, periodic, ssh, corner)
+  subroutine set_all_extr(s, step, periodic, ssh, corner)
 
     ! This procedures finds all the extrema of ssh. Not a function
     ! because "s" is not completely defined.
@@ -15,12 +15,8 @@ contains
 
     type(snapshot), intent(out):: s
     ! Define only s%extr_map, s%ind_extr, s%number_extr,
-    ! s%list%coord_extr, s%list%ssh_extr, s%list%cyclone
-
-    real, allocatable, intent(out):: innermost_level(:) ! (s%number_extr)
-    ! SSH level of the innermost contour around each extremum, in
-    ! m. By construction, innermost_level < extremum for a maximum, >
-    ! extremum for a minimum.
+    ! s%list%coord_extr, s%list%ssh_extr, s%list%cyclone,
+    ! s%list%innermost_level
 
     real, intent(in):: step(:) ! (2) longitude and latitude steps, in rad
     logical, intent(in):: periodic ! grid is periodic in longitude
@@ -38,6 +34,11 @@ contains
     logical, allocatable:: cyclone(:) ! (s%number_extr)
     integer i, copy
 
+    real, allocatable:: innermost_level(:) ! (s%number_extr)
+    ! SSH level of the innermost contour around each extremum, in
+    ! m. By construction, innermost_level < extremum for a maximum, >
+    ! extremum for a minimum.
+
     !--------------------------------------------------------------
 
     copy = merge(max_radius(1), 0, periodic)
@@ -64,6 +65,7 @@ contains
 
     s%number_extr = size(s%ind_extr, 2)
     allocate(s%list(s%number_extr))
+    s%list%innermost_level = innermost_level
 
     forall (i = 1:s%number_extr)
        s%list(i)%coord_extr = corner + (s%ind_extr(:, i) - 1) * step
diff --git a/Inst_eddies/set_all_outerm.f90 b/Inst_eddies/set_all_outerm.f90
index eaa543b97ef3fe00a35549acbb9df9ff78ba481c..c370ef2391b69058bf2e4f7be639e2fbe9944381 100644
--- a/Inst_eddies/set_all_outerm.f90
+++ b/Inst_eddies/set_all_outerm.f90
@@ -4,8 +4,7 @@ module set_all_outerm_m
 
 contains
 
-  subroutine set_all_outerm(s, step, periodic, ssh, corner, innermost_level, &
-       min_area)
+  subroutine set_all_outerm(s, step, periodic, ssh, corner, min_area)
 
     ! This procedure sets all outermost contours in the snapshot
     ! "s".
@@ -34,11 +33,6 @@ contains
     real, intent(in):: corner(:) ! (2) longitude and latitude of the
     ! corner of the global grid, in rad
 
-    real, intent(in):: innermost_level(:) ! (s%number_extr)
-    ! SSH level of the innermost contour around each extremum, in
-    ! m. By construction, innermost_level < extremum for a maximum, >
-    ! extremum for a minimum.
-
     real, intent(in):: min_area
     ! minimum area of an outermost contour, in m2
 
@@ -114,8 +108,8 @@ contains
 
        ! No need to consider contours with amplitudes < min_amp:
        innermost_level_2 = merge(s%list(i)%ssh_extr + merge(min_amp, &
-            - min_amp, s%list(i)%cyclone), innermost_level(i), &
-            abs(s%list(i)%ssh_extr - innermost_level(i)) < min_amp)
+            - min_amp, s%list(i)%cyclone), s%list(i)%innermost_level, &
+            abs(s%list(i)%ssh_extr - s%list(i)%innermost_level) < min_amp)
        
        outside_points = nearby_extr(s%extr_map(llc(1):urc(1), llc(2):urc(2)), &
             s%list, i)