diff --git a/Modules/Learning/Unsupervised/include/otbContingencyTableCalculator.txx b/Modules/Learning/Unsupervised/include/otbContingencyTableCalculator.txx
index 667c4280cdde66c195020b2b0bbc2af78b5f7af9..a5bb6761fb45579b28c4665d04b5a2edf35b807c 100644
--- a/Modules/Learning/Unsupervised/include/otbContingencyTableCalculator.txx
+++ b/Modules/Learning/Unsupervised/include/otbContingencyTableCalculator.txx
@@ -22,6 +22,7 @@
 #define otbContingencyTableCalculator_txx
 
 #include "otbContingencyTableCalculator.h"
+#include "itkMacro.h"
 #include "itkVariableLengthVector.h"
 #include "itkListSample.h"
 
@@ -59,6 +60,9 @@ ContingencyTableCalculator<TClassLabel>
     ++prodBegin;
     ++m_NumberOfSamples;
     }
+
+  if( refBegin != refEnd || prodBegin != prodEnd )
+    itkExceptionMacro(<< "The references and produced labels did not end simultaneously.");
 }
 
 template<class TClassLabel>
@@ -79,6 +83,10 @@ ContingencyTableCalculator<TClassLabel>
     ++itRef;
     ++itProd;
     }
+
+  if( !itRef.IsAtEnd() || !itProd.IsAtEnd() )
+    itkExceptionMacro(<< "The references and produced labels did not end simultaneously.");
+
 }