diff --git a/Code/Radiometry/otbLuminanceToReflectanceImageFilter.h b/Code/Radiometry/otbLuminanceToReflectanceImageFilter.h
index c698ac6ae9251baa144218a8aef914b7677c0c8c..2b67cbea786450e718960012170575009e83b85c 100644
--- a/Code/Radiometry/otbLuminanceToReflectanceImageFilter.h
+++ b/Code/Radiometry/otbLuminanceToReflectanceImageFilter.h
@@ -88,7 +88,7 @@ public:
            * m_IlluminationCorrectionCoefficient
            / m_SolarIllumination;
     
-    outPixel = static_cast<TOutput>( vcl_floor(temp*1000.)/1000.);
+    outPixel = static_cast<TOutput>( vcl_floor((temp+0.0005)*1000.)/1000.);
   
     return outPixel;
   }
diff --git a/Code/Radiometry/otbReflectanceToSurfaceReflectanceImageFilter.h b/Code/Radiometry/otbReflectanceToSurfaceReflectanceImageFilter.h
index 887dcff4659b701900bee52c2ce49fef420b882c..430682177ffeb98d4efc17769fd99738e855b732 100644
--- a/Code/Radiometry/otbReflectanceToSurfaceReflectanceImageFilter.h
+++ b/Code/Radiometry/otbReflectanceToSurfaceReflectanceImageFilter.h
@@ -97,7 +97,7 @@ public:
     temp = static_cast<double>(inPixel)*m_Coefficient + m_Residu;
     temp2 =  temp / (1. + m_SphericalAlbedo *  temp);
 
-    outPixel = static_cast<TOutput>( vcl_floor(temp2*1000.)/1000.);
+    outPixel = static_cast<TOutput>( vcl_floor((temp2+0.0005)*1000.)/1000.);
 
     return outPixel;
   }