diff --git a/src/corner_falko_2d.cpp b/src/corner_falko_2d.cpp
index 09bf36f9d91f9dfaabf8b8369bd99bfade0b71f7..ba3c7f94bd2bd9b6b8e7a1033854ad7642380238 100644
--- a/src/corner_falko_2d.cpp
+++ b/src/corner_falko_2d.cpp
@@ -70,7 +70,7 @@ void CornerFalko2d::findLoopClosure(falkolib::LaserScan scan){
 
         int NewMatchingNumber = match(keypointSets[i], keypointSet2, assoNN);
 
-        if (NewMatchingNumber > matchingNumber ) {
+        if (NewMatchingNumber > matchingNumber && NewMatchingNumber>keypointsNumberTh) {
             matchingNumber=NewMatchingNumber;
             matchingPosition=i;
         }
diff --git a/src/corner_falko_2d.h b/src/corner_falko_2d.h
index 8bc7639acb16c499cae6db3e463f6172f0c0846a..0e355c1a4a319b0efc967bfaedb5d5f7e10678eb 100644
--- a/src/corner_falko_2d.h
+++ b/src/corner_falko_2d.h
@@ -72,11 +72,17 @@ public:
      **/
     void findLoopClosure(falkolib::LaserScan scan);
 
+    /** @brief set euclidean distance threshold for keypoints distance measurements*/
+    void setKeypointsNumberTh(int _th) {
+        keypointsNumberTh = _th;
+    }
+
     std::vector<std::vector<falkolib::FALKO>> keypointSets;
     std::vector<falkolib::FALKO> lastKeypointSet;
     std::vector<std::vector<falkolib::BSC>> descriptorSets;
     std::vector<falkolib::BSC>lastDescriptorSet;
 
+
     int matchingNumber;
 
     int scanNumber=0;
@@ -84,6 +90,8 @@ public:
     int scansExtracted=0;
 
     int matchingPosition=-1;
+
+    int keypointsNumberTh=2;
 };
 
 } /* namespace laserscanutils */