diff --git a/Common/derived_types.f90 b/Common/derived_types.f90
index 3914603ac4bc914db4a16046bdaec89e75600b73..75b142d25802aa645adf03eb93d58d56197361a2 100644
--- a/Common/derived_types.f90
+++ b/Common/derived_types.f90
@@ -37,8 +37,7 @@ module derived_types
      ! is not a null ssh contour then max_speed is the speed on
      ! speed_cont.
 
-     logical valid ! valid out_cont found: not a null contour, and
-                   ! with sufficient area
+     logical valid ! valid out_cont found: not a null contour
 
      integer:: delta_in = huge(0)
      ! Minimum difference in time subscript where there is a direct
diff --git a/Inst_eddies/Documentation_texfol/Graphiques/.gitignore b/Inst_eddies/Documentation_texfol/Graphiques/.gitignore
index 18408f2cba63d849a4466af472383931cd313f76..f81ca1b4b6b2a57c110e4497a2a7e9afdd41ed27 100644
--- a/Inst_eddies/Documentation_texfol/Graphiques/.gitignore
+++ b/Inst_eddies/Documentation_texfol/Graphiques/.gitignore
@@ -11,3 +11,4 @@ distribution.pdf
 user_proc.pdf
 user_sys.pdf
 slice.pdf
+nearby_extr.pdf
diff --git a/Inst_eddies/Documentation_texfol/Graphiques/GNUmakefile b/Inst_eddies/Documentation_texfol/Graphiques/GNUmakefile
index d8c50ffd051f28c0e4c5f40c0896fd8a04851b99..0ff27522ba5aadd8230a28a1f06fd865539ac9b7 100644
--- a/Inst_eddies/Documentation_texfol/Graphiques/GNUmakefile
+++ b/Inst_eddies/Documentation_texfol/Graphiques/GNUmakefile
@@ -1,4 +1,5 @@
-objects = degeneracy.pdf periodicity.pdf copy.pdf set_all_outerm.pdf SHPC.pdf plot_test_output.pdf slice.pdf
+objects = degeneracy.pdf periodicity.pdf copy.pdf set_all_outerm.pdf	\
+SHPC.pdf plot_test_output.pdf slice.pdf nearby_extr
 
 %.pdf: %.odg
 	unoconv --doctype=graphics $<
diff --git a/Inst_eddies/Documentation_texfol/Graphiques/nearby_extr.odg b/Inst_eddies/Documentation_texfol/Graphiques/nearby_extr.odg
new file mode 100644
index 0000000000000000000000000000000000000000..8c5c50c13ed5815e009f912fcd2ce6dab50a82ec
Binary files /dev/null and b/Inst_eddies/Documentation_texfol/Graphiques/nearby_extr.odg differ
diff --git a/Inst_eddies/Documentation_texfol/documentation.tex b/Inst_eddies/Documentation_texfol/documentation.tex
index 01fca054fbb4335ca54267cae42400d43430d9f7..4d0d003f93b45efdde8b3023b1ae7afb85ed477d 100644
--- a/Inst_eddies/Documentation_texfol/documentation.tex
+++ b/Inst_eddies/Documentation_texfol/documentation.tex
@@ -281,12 +281,12 @@ shaperead function.
 
 \section{Cas pathologiques}
 
-\verb+out_cont+ est vide si et seulement s'il n'y a
-pas de bon contour à \verb+innermost_level+, ce qui peut en
-particulier se produire si \verb+innermost_level+ correspond à
-l'amplitude minimale. Même si un contour extérieur est trouvé (avec
-une amplitude supérieure à l'amplitude minimale par construction), il
-peut ne pas être valide à cause du critère de surface minimale.
+\verb+out_cont+ est vide s'il n'y a pas de bon contour à
+\verb+innermost_level_2+ ou si le contour extérieur trouvé (avec une
+amplitude supérieure à l'amplitude minimale par construction) a une
+surface insuffisante. L'absence de bon contour à
+\verb+innermost_level_2+ peut en particulier se produire si
+\verb+innermost_level_2+ correspond à l'amplitude minimale.
 
 Le principe général est que la composante \verb+speed_cont+ est vide
 s'il n'y a pas mieux que \verb+out_cont+ comme contour de vitesse
@@ -329,8 +329,7 @@ tableau (\ref{tab:null_ssh_contour}).
     \verb+out_cont+ & valid & radius4 & \verb+max_speed+
     & fraction & note \\
     \hline
-    null & F & 0 & \np{e4} & 5 \% & 1 \\
-    $\ne$ null & F & 0 & \np{e4} & 6 \% \\
+    null & F & 0 & \np{e4} & 11 \% & 1 \\
     $\ne$ null & T & 1 & NaN & 3 \% & 2 \\
     $\ne$ null & T & 1 & $\ne \np{e4}$, $\ne$ NaN & 47 \% \\
     $\ne$ null & T & $\ge 2$ & $\ne \np{e4}$, $\ne$ NaN & 21 \%
@@ -340,14 +339,15 @@ tableau (\ref{tab:null_ssh_contour}).
   vide]{Cas où la composante speed\_cont d'un tourbillon est
     vide. Colonne fraction : pour la région 5, nombre de cas sur 260
     extremums au total. Note 1 : pas de bon contour à
-    innermost\_level. Note 2 : out\_cont est près d'une côte, champ de
+    innermost\_level\_2 ou surface du contour extérieur
+    insuffisante. Note 2 : out\_cont est près d'une côte, champ de
     vitesse non défini, speed vaut $10^4$ dans le fichier DBF. Note 3
     : pas mieux que out\_cont pour la vitesse maximale.}
   \label{tab:null_ssh_contour}
 \end{table}
 Sur la région 5, sur 260 extremums, je trouve les nombres de cas
-suivants pour les 5 lignes du tableau (\ref{tab:null_ssh_contour}) :
-12, 15, 7, 122, 54. Au total : 210 cas où les composantes \verb+out_cont+ ou
+suivants pour les 4 lignes du tableau (\ref{tab:null_ssh_contour}) :
+27, 7, 122, 54. Au total : 210 cas où les composantes \verb+out_cont+ ou
 \verb+speed_cont+ d'un tourbillon sont vides, sur 260 tourbillons, soit 81
 \% des tourbillons.
 
@@ -632,10 +632,10 @@ l'ordre de parcours du tableau.
 
 Il faut prévoir dans \verb+get_1_outerm+ la possibilité de ne pas
 trouver de bon contour. La logique est impactée. \`A strictement
-parler, la valeur de \verb+innermost_level+ ne permet plus de prévoir si
+parler, la valeur de \verb+innermost_level_2+ ne permet plus de prévoir si
 l'amplitude va être suffisante, et on ne sait plus quelle valeur
 intiale de \verb+level_good+ prendre dans \verb+get_1_outerm+. Je garde
-néanmoins \verb+innermost_level+ comme valeur intiale de \verb+level_good+. La
+néanmoins \verb+innermost_level_2+ comme valeur intiale de \verb+level_good+. La
 conséquence est que je risque de ne pas détecter de contour autour
 d'un extremum dégénéré alors qu'on pourrait peut-être en trouver un en
 prenant une valeur initiale de \verb+level_good+ plus proche de
@@ -918,18 +918,18 @@ direction jusqu'à ce que le sens de variation de SSH change. Dans mes
 tests, le nombre d'itérations dans la recherche par dichotomie est
 typiquement une dizaine, pour une précision de \np{0.5} mm. En
 considérant simplement l'extremum de ssh sur la fenêtre, la taille de
-l'intervalle initial [\verb+innermost_level+, level\_try] est plus
+l'intervalle initial [\verb+innermost_level_2+, level\_try] est plus
 grande. Sur mes tests, elle est plus grande typiquement d'un facteur 2
 environ seulement, donc le nombre d'itérations change peu.
 
 Pour l'amplitude minimale, si je prends simplement l'amplitude
-correspondant à \verb+innermost_level+ alors l'algorithme échoue lorsque
-l'extremum est à un point du bord et que le point à \verb+innermost_level+
-est au bord. Dans ce cas, good\_contour échoue parce que Contour\_531
-ne ferme pas les contours passant par le bord. J'avais essayé, pour
-éviter le problème, de prendre une amplitude minimale légèrement
-inférieure mais cela pose des problèmes de cohérence dans
-l'algorithme.
+correspondant à \verb+innermost_level_2+ alors l'algorithme échoue
+lorsque l'extremum est à un point du bord et que le point à
+\verb+innermost_level_2+ est au bord. Dans ce cas, good\_contour
+échoue parce que Contour\_531 ne ferme pas les contours passant par le
+bord. J'avais essayé, pour éviter le problème, de prendre une
+amplitude minimale légèrement inférieure mais cela pose des problèmes
+de cohérence dans l'algorithme.
 
 Remarque. Il est inutile de tester si area est supérieur à
 \verb+min_area+ à chaque itération. Si area est strictement inférieur,
@@ -990,6 +990,25 @@ Cas de périodicité : field(i + m - 2, :) = field(i, :).
 
 Il manque des tests pour lesquels direction vaut 1 et 4.
 
+\subsection{nearby\_extr}
+
+Pour chaque tourbillon du résultat, le contour le plus extérieur doit
+être fermé, doit contenir l'extremum $E_1$ de SSH du tourbillon
+considéré et ne doit contenir aucun autre extremum de SSH dans une
+liste donnée d'extremums.  La liste d'extremums qui ne peuvent être
+contenus est, dans le cas où $E_1$ est un maximum : les minimums, les
+maximums de valeur strictement supérieure à celle de $E_1$, les
+maximums de valeur inférieure à celle de $E_1$ avec contour extérieur
+d'amplitude et surface significatives. D'un point de vue
+algorithmique, cela se traduit par : minimum ou valide, puisqu'on a
+initialisé le champ valid à vrai. Cf. figure \ref{fig:nearby_extr}.
+\begin{figure}[htbp]
+  \centering
+  \includegraphics{nearby_extr}
+  \caption{nearby\_extr}
+  \label{fig:nearby_extr}
+\end{figure}
+
 \subsection{set\_all\_outerm}
 \label{sec:set_all_outerm}
 
@@ -999,14 +1018,6 @@ orientation, les cyclones sont en premier. Pour les cyclones, les
 extremums sont triés par ordre de SSH décroissante. Pour les
 anticyclones, les extremums sont triés par ordre de SSH croissante.
 
-Pour chaque tourbillon du résultat, le contour le plus extérieur doit
-être fermé, doit contenir l'extremum $E_1$ de SSH du tourbillon
-considéré et ne doit contenir aucun autre extremum de SSH dans une
-liste donnée d'extremums.  La liste d'extremums qui ne peuvent être
-contenus, est dans le cas où $E_1$ est un maximum : les minimums, les
-maximums de valeur supérieure à celle de $E_1$, les maximums valides
-(amplitude et surface significatives du contour extérieur).
-
 Cf. algorithme \ref{alg:set_all_outerm}.
 \begin{algorithm}[htbp]
   Déclarations :
@@ -1026,7 +1037,7 @@ Cf. algorithme \ref{alg:set_all_outerm}.
     \STATE e\%out\_cont = get\_1\_outerm(e\%cyclone, e\%coord\_extr,
     innermost\_level, outside\_points, ssh, llc, urc, corner, step)
 
-    \STATE e\%valid = e\%out\_cont\%area >= min\_area
+    \STATE e\%valid = e\%out\_cont\%closed
     \ENDFOR
   \end{algorithmic}  
   \caption{subroutine set\_all\_outerm(s, step, ssh, corner)}
diff --git a/Inst_eddies/set_all_outerm.f90 b/Inst_eddies/set_all_outerm.f90
index 6f403c6a5ba44f83ac7084e314683af6829e5deb..a6395fc7d55c47328020199fc6babc15ab177b02 100644
--- a/Inst_eddies/set_all_outerm.f90
+++ b/Inst_eddies/set_all_outerm.f90
@@ -20,7 +20,7 @@ contains
     use nearby_extr_m, only: nearby_extr
 
     type(snapshot), intent(inout):: s
-    ! Define s%list%valid, s%list%out_cont. s%number_extr,
+    ! Define s%list%valid and s%list%out_cont. s%number_extr,
     ! s%list%cyclone, s%list%extr, s%list%innermost_level, s%extr_map
     ! should be defined on entry.
 
@@ -74,7 +74,6 @@ contains
 
     if (.not. periodic) nlon = size(ssh, 1)
     nlat = size(ssh, 2)
-
     allocate(sorted_extr(s%number_extr))
     min_area = pi * (min_radius * 1e3)**2