diff --git a/Code/Simulation/otbReduceSpectralResponse.txx b/Code/Simulation/otbReduceSpectralResponse.txx
index 78a4b34e14fded8ec7988dabf3eeed0d835e2dc6..66cc34bc1d28ef76f3d48d3b559e0f5871142810 100644
--- a/Code/Simulation/otbReduceSpectralResponse.txx
+++ b/Code/Simulation/otbReduceSpectralResponse.txx
@@ -94,7 +94,8 @@ ReduceSpectralResponse<TSpectralResponse , TRSR>
       PrecisionType deltaLambda = lambda2-lambda1;
       ValuePrecisionType rsr1 = (*(it-1)).second;
       ValuePrecisionType rsr2 = (*it).second;
-
+      ValuePrecisionType spectrum1 = (*m_InputSpectralResponse)(lambda1);
+      ValuePrecisionType spectrum2 = (*m_InputSpectralResponse)(lambda2);
       /*
         In order to simplify the calculations for the reflectance mode,
         we introduce the solar irradiance in the general formula with
@@ -110,12 +111,14 @@ ReduceSpectralResponse<TSpectralResponse , TRSR>
       rsr1 *= solarIrradiance1;
       rsr2 *= solarIrradiance2;
 
-      totalArea += trapezoid_area(lambda1, lambda2, solarIrradiance1, solarIrradiance2);
-      res += trapezoid_area(lambda1, lambda2, rsr1, rsr2);
-        
-      ++it;
-      }
+      totalArea += trapezoid_area(lambda1, lambda2,
+                                  solarIrradiance1, solarIrradiance2);
+      res += trapezoid_area(lambda1, lambda2,
+                            rsr1*spectrum1,
+                            rsr2*spectrum2);
 
+      ++it;
+      }    
     return res / totalArea;
     }