diff --git a/Code/BasicFilters/otbProlateInterpolateImageFunction.h b/Code/BasicFilters/otbProlateInterpolateImageFunction.h
index 4fc23a689d4483f682ceac90bd1c9b86701d5ee1..4e95649060d1ce279729e17b1b9cd7c00e0f4ea5 100644
--- a/Code/BasicFilters/otbProlateInterpolateImageFunction.h
+++ b/Code/BasicFilters/otbProlateInterpolateImageFunction.h
@@ -47,10 +47,12 @@ class ProlateFunction
   inline TOutput operator()( const TInput & A ) const
     { 
       TOutput val = itk::NumericTraits< TOutput >::Zero;
-      if (A != itk::NumericTraits< TInput >::Zero)
+      if (A != itk::NumericTraits< TInput >::Zero && m_Radius!=0)
 	{
-	  unsigned int ival = static_cast<unsigned int>(m_OriginalProfilSize*static_cast<double>(vcl_abs(A))/static_cast<double>(m_Radius+1));
-	  val = m_OriginalProfil[ival];
+	  //unsigned int ival = static_cast<unsigned int>(m_OriginalProfilSize*static_cast<double>(vcl_abs(A))/static_cast<double>(m_Radius));
+	  //val = m_OriginalProfil[ival];
+	  double ival = static_cast<double>(m_OriginalProfilSize)*static_cast<double>(vcl_abs(A))/static_cast<double>(m_Radius);
+	  val = m_OriginalProfil[static_cast<int>(vcl_floor(ival+0.5))];
 	}
       else
 	{