diff --git a/Code/Simulation/otbSpectralResponse.txx b/Code/Simulation/otbSpectralResponse.txx
old mode 100644
new mode 100755
index a64c12c47e77a647b746759250ad7f6e5d3ecab6..18298526f8839e34c8ff9beaee42290c1a232301
--- a/Code/Simulation/otbSpectralResponse.txx
+++ b/Code/Simulation/otbSpectralResponse.txx
@@ -239,7 +239,7 @@ SpectralResponse<TPrecision, TValuePrecision>
   while ((*it).second <= m_SensitivityThreshold)
     {
     ++it;
-    if (it == m_Response.end())
+    if (it == (m_Response.end()-1))
       {
       m_Interval.first = static_cast<TPrecision> (0.0);
       m_Interval.second = static_cast<TPrecision> (0.0);
@@ -249,15 +249,16 @@ SpectralResponse<TPrecision, TValuePrecision>
 
     }
   m_Interval.first = (*it).first;
-
-  while ((*it).second > m_SensitivityThreshold)
+  it = (m_Response.end()-1);
+  while ((*it).second <= m_SensitivityThreshold)
     {
-    if (it == m_Response.end())
+    if (it == (m_Response.begin()))
       {
       m_Interval.second = (*it).first;
+      m_IntervalComputed = true;
       return;
       }
-    ++it;
+    --it;
 
     }