diff --git a/GNUmakefile b/GNUmakefile
index e29763e0fcd41ffd7affc9a1b6d88f107f1004df..642e4736b1df44223a74780ddd576067ff8256f3 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -1,9 +1,11 @@
 # This is a makefile for GNU make.
 
+include ${general_compiler_options_dir}/settings.mk
+
 # 1. Source files and libraries
 
 makefile_dir = .
-VPATH = ${makefile_dir} ${makefile_dir}/Tests
+VPATH += ${makefile_dir}/Tests
 
 src_test_local_extrema = test_local_extrema.f local_extrema.f
 
@@ -51,8 +53,6 @@ execut = test_good_contour test_inside_4 test_get_1_outerm test_local_extrema te
 
 # 3. Compiler-dependent part
 
-include ${general_compiler_options_dir}/settings.mk
-
 ifeq (${FC},gfortran)
 # gfortran bug:
 FFLAGS := $(subst invalid${comma},,${FFLAGS})
diff --git a/Tests/read_snapshot.f b/Tests/read_snapshot.f
index 6f7b89ab71bab2320ae7e323cb36041615b72f4f..a6b53ac4e91042a75609a132b1c5b95abe3172f5 100644
--- a/Tests/read_snapshot.f
+++ b/Tests/read_snapshot.f
@@ -46,19 +46,19 @@ contains
 
     !---------------------------------------------------------------------
 
-    call shpgetinfo(hshp_extremum, s%number_vis_eddies, shapetype, minbound, &
+    call shpgetinfo(hshp_extremum, s%number_vis_extr, shapetype, minbound, &
          maxbound, dbffieldcount, dbfrecordcount)
-    allocate(s%list_vis(s%number_vis_eddies))
+    allocate(s%list_vis(s%number_vis_extr))
     call read_field_indices(hshp_extremum, hshp_outermost, hshp_max_speed)
 
-    do ishape = 0, s%number_vis_eddies - 1
+    do ishape = 0, s%number_vis_extr - 1
        call read_eddy(e, k, i, hshp_extremum, hshp_outermost, hshp_max_speed, &
             ishape)
        s%list_vis(i) = e
     end do
 
-    allocate(s%ind_extr(2, s%number_vis_eddies))
-    forall (i = 1:s%number_vis_eddies) s%ind_extr(:, i) &
+    allocate(s%ind_extr(2, s%number_vis_extr))
+    forall (i = 1:s%number_vis_extr) s%ind_extr(:, i) &
          = nint(convert_to_ind(s%list_vis(i)%coord_extr, corner, &
          step = [0.25, 0.25] * deg_to_rad))
 
@@ -67,14 +67,14 @@ contains
     
     ! Since we are not sure that there is no duplicate tuple in
     ! s%ind_extr, we must use a do construct and not a forall:
-    do i = 1, s%number_vis_eddies
+    do i = 1, s%number_vis_extr
        s%extr_map(s%ind_extr(1, i), s%ind_extr(2, i)) = i
     end do
 
-    call assert(count(s%extr_map /= 0) == s%number_vis_eddies, &
+    call assert(count(s%extr_map /= 0) == s%number_vis_extr, &
          "read_snapshot: one eddy per grid point")
 
-    s%number_eddies = s%number_vis_eddies
+    s%number_eddies = s%number_vis_extr
 
   end subroutine read_snapshot
   
diff --git a/Tests/test_get_snapshot.f b/Tests/test_get_snapshot.f
index c8ef2f0d3374a79fa719359820500f117e8f69bb..6f7a3801b8866cf4c96939fc511a0c1efc2d2c91 100644
--- a/Tests/test_get_snapshot.f
+++ b/Tests/test_get_snapshot.f
@@ -92,7 +92,7 @@ program test_get_snapshot
   open(unit_number_eddies, file = "number_eddies_1.csv", status = "replace", &
        action = "write")
   write(unit_number_eddies, fmt = *) '"date index" ' &
-       // '"number of visible eddies" "number of interpolated eddies"'
+       // '"number of visible extrema" "number of interpolated eddies"'
   ! (title line)
 
   call dispatch_snapshot(s, hshp_extremum, hshp_outermost, hshp_max_speed, &
@@ -110,11 +110,11 @@ program test_get_snapshot
   close(unit_number_eddies)
   print *, 'Created "number_eddies_1.csv".'
 
-  if (s%number_vis_eddies /= 0) then
+  if (s%number_vis_extr /= 0) then
      print *, "Average number of points per outermost contour: ", &
-          sum(s%list_vis%out_cont%n_points) / real(s%number_vis_eddies)
+          sum(s%list_vis%out_cont%n_points) / real(s%number_vis_extr)
      print *, "Average number of points per max-speed contour: ", &
-          sum(s%list_vis%speed_cont%n_points) / real(s%number_vis_eddies)
+          sum(s%list_vis%speed_cont%n_points) / real(s%number_vis_extr)
   else
      print *, "No visible eddy."
   end if
diff --git a/Tests/test_read_snapshot.f b/Tests/test_read_snapshot.f
index a5e86e8514ecf3bc37c59e47d5030caec2ff5d9e..52c27cd83f021e51408ec141765b2fad913f4464 100644
--- a/Tests/test_read_snapshot.f
+++ b/Tests/test_read_snapshot.f
@@ -74,7 +74,7 @@ program test_read_snapshot
 
   print *, "s%ind_extr:"
 
-  do i = 1, s%number_vis_eddies
+  do i = 1, s%number_vis_extr
      print *, s%ind_extr(:, i)
   end do
 
diff --git a/Tests/test_set_all_outerm.f b/Tests/test_set_all_outerm.f
index 4d42e010e47359811b8d8d06c6881c3bf81ec758..6368d4f9a6f7305bd116ffd3d2ed2cadc4139029 100644
--- a/Tests/test_set_all_outerm.f
+++ b/Tests/test_set_all_outerm.f
@@ -121,7 +121,7 @@ program test_set_all_outerm
        action = "write")
   write(unit_isolated, fmt = *) '"date index" "eddy index"' ! title line
 
-  do i = 1, s%number_vis_eddies
+  do i = 1, s%number_vis_extr
      call shp_append_point_03(ishape, hshp_extremum, &
           s%list_vis(i)%coord_extr * rad_to_deg)
      call dbf_write_attribute_03(hshp_extremum, ishape, 0, &
@@ -162,7 +162,7 @@ program test_set_all_outerm
           == huge(0)) write(unit_isolated, fmt = *) 1, i
   end do
 
-  print *, "s%number_vis_eddies = ", s%number_vis_eddies
+  print *, "s%number_vis_extr = ", s%number_vis_extr
 
   CALL shpclose(hshp_extremum)
   print *, 'Created shapefile "extremum_1".'
@@ -171,6 +171,6 @@ program test_set_all_outerm
   close(unit_isolated)
   print *, 'Created "isolated_nodes_1.csv".'
   print *, "Average number of points per outermost contour: ", &
-       sum(s%list_vis%out_cont%n_points) / real(s%number_vis_eddies)
+       sum(s%list_vis%out_cont%n_points) / real(s%number_vis_extr)
 
 end program test_set_all_outerm
diff --git a/derived_types.f b/derived_types.f
index 91f54a58450eb40490777d88658fc372ea1baf2c..98f4d691b162b6e0da536cb0c4d9247261e8541b 100644
--- a/derived_types.f
+++ b/derived_types.f
@@ -38,10 +38,12 @@ module derived_types
   end type eddy
 
   type snapshot
-     type(eddy), allocatable:: list_vis(:) ! (number_vis_eddies)
-     ! visible eddies at a given date
+     type(eddy), allocatable:: list_vis(:) ! (number_vis_extr)
+     ! Visible "eddies" at a given date. These include "eddies"
+     ! without an outermost contour, that is only the extremum is
+     ! visible.
      
-     integer number_vis_eddies ! number of visible eddies
+     integer number_vis_extr ! number of visible extrema
 
      integer, allocatable:: extr_map(:, :)
      ! (1 - max_radius(1):nlon + max_radius(1), nlat) if the grid is
@@ -49,7 +51,7 @@ module derived_types
      ! extremum SSH: identification number or this extremum. 0 at
      ! other points.
 
-     integer, allocatable:: ind_extr(:, :) ! (2, number_vis_eddies)
+     integer, allocatable:: ind_extr(:, :) ! (2, number_vis_extr)
      ! List of coordinates of ssh extrema in the global grid, in index
      ! space. The position in this list is the identifying number of
      ! the extremum.
diff --git a/dispatch_snapshot.f b/dispatch_snapshot.f
index 8118869659003f6df9a3bfb9d8901477884873a4..2917142d8041879ec84c22868420024db11fbb87 100644
--- a/dispatch_snapshot.f
+++ b/dispatch_snapshot.f
@@ -40,15 +40,15 @@ contains
     if (m == 1 .or. k >= k_begin + max_delta) then
        ! Write snapshot:
 
-       do i = 1, s%number_vis_eddies
+       do i = 1, s%number_vis_extr
           call write_eddy(s%list_vis(i), k, i, hshp_extremum, hshp_outermost, &
                hshp_max_speed)
           if (s%list_vis(i)%delta_in == huge(0) .and. s%list_vis(i)%delta_out &
                == huge(0)) write(unit_isolated, fmt = *) k, i
        end do
 
-       write(unit_number_eddies, fmt = *) k, s%number_vis_eddies, &
-            s%number_eddies - s%number_vis_eddies
+       write(unit_number_eddies, fmt = *) k, s%number_vis_extr, &
+            s%number_eddies - s%number_vis_extr
     else
        call send_snapshot(s, tag = k, dest = m - 1)
     end if
diff --git a/get_snapshot.f b/get_snapshot.f
index 7e3e65cdb61fa463b6f9ca0ee284f3fe77b68fe9..f2bb0a5b0590fc0115242c4fbeb8ff878582e83c 100644
--- a/get_snapshot.f
+++ b/get_snapshot.f
@@ -95,7 +95,7 @@ contains
        ! Done with outermost contours, now let us take care of the
        ! max-speed contours.
 
-       do i = 1, s%number_vis_eddies
+       do i = 1, s%number_vis_extr
           if (s%list_vis(i)%valid) then
              ! Restrict the field to the outermost contour:
 
@@ -129,7 +129,7 @@ contains
           end if
        end do
 
-       s%number_eddies = s%number_vis_eddies
+       s%number_eddies = s%number_vis_extr
     else
        call receive_snapshot(s, source = m + 1, tag = k)
     end if
diff --git a/set_all_outerm.f b/set_all_outerm.f
index e8068389815b42c2506b01db279253872e579c11..194728d697c7fe0426068122b24f5f03112776b9 100644
--- a/set_all_outerm.f
+++ b/set_all_outerm.f
@@ -44,19 +44,19 @@ contains
 
     integer nlon, nlat
 
-    real, allocatable:: innermost_level(:) ! (s%number_vis_eddies)
+    real, allocatable:: innermost_level(:) ! (s%number_vis_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, allocatable:: cyclone(:) ! (s%number_vis_eddies)
+    logical, allocatable:: cyclone(:) ! (s%number_vis_extr)
     integer i, l, copy
     integer n_cycl ! number of cyclones
 
     real, parameter:: min_area = 8e8
     ! minimum area of an outermost contour, in m2
 
-    integer, allocatable:: sorted_extr(:) ! (s%number_vis_eddies)
+    integer, allocatable:: sorted_extr(:) ! (s%number_vis_extr)
     ! Sorted identifying number of extrema: first, minima sorted in
     ! order of decreasing SSH, and second, maxima sorted in order of
     ! increasing SSH.
@@ -95,10 +95,10 @@ contains
             = s%extr_map(2:max_radius(1), :)
     end if
 
-    s%number_vis_eddies = size(s%ind_extr, 2)
-    allocate(s%list_vis(s%number_vis_eddies), sorted_extr(s%number_vis_eddies))
+    s%number_vis_extr = size(s%ind_extr, 2)
+    allocate(s%list_vis(s%number_vis_extr), sorted_extr(s%number_vis_extr))
 
-    forall (i = 1:s%number_vis_eddies)
+    forall (i = 1:s%number_vis_extr)
        s%list_vis(i)%coord_extr = corner + (s%ind_extr(:, i) - 1) * step
        s%list_vis(i)%ssh_extr = ssh(s%ind_extr(1, i), s%ind_extr(2, i))
        s%list_vis(i)%cyclone = cyclone(i)
@@ -117,7 +117,7 @@ contains
     selection = selection(indexx(s%list_vis(selection)%ssh_extr))
     sorted_extr(n_cycl + 1:) = selection
 
-    do l = 1, s%number_vis_eddies
+    do l = 1, s%number_vis_extr
        i = sorted_extr(l)
 
        ! Define the geographical window around each eddy extremum:
diff --git a/successive_overlap.f b/successive_overlap.f
index 93c122bb434b65338943bdb8c280fb63e1adb5b7..d899ffff6aebb8fe9c4b453c97f41218ba0bce17 100644
--- a/successive_overlap.f
+++ b/successive_overlap.f
@@ -35,7 +35,7 @@ contains
 
     !-----------------------------------------------------------------------
 
-    do i1 = 1, flow(j - 1)%number_vis_eddies
+    do i1 = 1, flow(j - 1)%number_vis_extr
        if (flow(j - 1)%list_vis(i1)%valid) then
           polyline_1 = merge(flow(j - 1)%list_vis(i1)%speed_cont%polyline, &
                flow(j - 1)%list_vis(i1)%out_cont%polyline, &