diff --git a/doc/value/duplicates.pl b/devel_tools/duplicates.pl
similarity index 55%
rename from doc/value/duplicates.pl
rename to devel_tools/duplicates.pl
index 1188d66babbdd17c0dc2f7f7006aaa632217ee97..ba91fcccfdd869819e6ed19491723f03f9af9cfa 100755
--- a/doc/value/duplicates.pl
+++ b/devel_tools/duplicates.pl
@@ -14,21 +14,21 @@ if (!@ARGV) {
 while (1) {
   my $FileName = shift @ARGV ;
 
-  # Exit code = number of duplicates found.  
+  # Exit code = number of duplicates found.
   exit $DupCount if (!$FileName) ;
 
-  open FILE, $FileName or die $!; 
-  
+  open FILE, $FileName or die $!;
+
   my $LastWord = "" ;
   my $LineNum = 0 ;
-  
+
   while (<FILE>) {
     chomp ;
 
     $LineNum ++ ;
-    
+
     my @words = split (/(\W+)/) ;
-    
+
     foreach my $word (@words) {
       # Skip spaces:
       next if $word =~ /^\s*$/ ;
@@ -38,9 +38,25 @@ while (1) {
         $LastWord = "" ;
         next ;
       }
-      
-      # Found a dup? 
-      if (lc($word) eq lc($LastWord)) {
+
+      # Skip numbers
+      if ($word =~ /^\d+$/) {
+        $LastWord = "" ;
+        next ;
+      }
+
+      # Found a dup?
+      # note: some words are ignored, such as "long long",
+      # or some variable/field names
+      if ($word eq $LastWord && length($word) >= 3 &&
+          !($word eq "lexbuf") &&
+          !($word eq "ofs") &&
+          !($word eq "addr") &&
+          !($word eq "ros") &&
+          !($word eq "end") &&
+          !($word eq "args") &&
+          !($word eq "pos") &&
+          !($word eq "long")) {
         print "$FileName:$LineNum $word\n" ;
         $DupCount ++ ;
       } # Thanks to Sean Cronin for tip on case.
@@ -49,7 +65,6 @@ while (1) {
       $LastWord = $word ;
     }
   }
-  
+
   close FILE ;
 }
-
diff --git a/doc/developer/advance.tex b/doc/developer/advance.tex
index e275932216d8a6a094f3bf7b4d436882d18a6405..db1da3450701a754f0036a5e10e15ff392b7de37 100644
--- a/doc/developer/advance.tex
+++ b/doc/developer/advance.tex
@@ -3521,7 +3521,7 @@ source files is to use an option such as \verb+-include+ in GCC.
   Contents of \verb+tests/misc/custom_machdep/__fc_machdep_custom.h+, used as
   example for creating custom machdeps. Notice the unusual size for \verb+int+
   (3 bytes), selected for testing purposes only, and inconsistent with the
-  the chosen values for \verb+INT_MIN+ and \verb+INT_MAX+, which do not fit
+  chosen values for \verb+INT_MIN+ and \verb+INT_MAX+, which do not fit
   in 3 bytes.
 \lstinputlisting{../../tests/misc/custom_machdep/__fc_machdep_custom.h}
 \end{example}
diff --git a/doc/value/main.tex b/doc/value/main.tex
index 4123d592d89c6dd8039ca466e36f3a0d7179135a..45bc3c480be4753231c29106424b801165a09f95 100644
--- a/doc/value/main.tex
+++ b/doc/value/main.tex
@@ -1470,7 +1470,7 @@ This may happen on:
   according to the \isoc{} standard. However, a footnote also explains that
   conversion between pointers and integers is ``\emph{intended to
   be consistent with the addressing structure of the execution environment}''.
-  This is why Eva also also authorizes conversion of integers:
+  This is why Eva also authorizes conversion of integers:
   \begin{itemize}
   \item in the range of valid absolute addresses
     (according to \texttt{absolute-valid-range})