diff --git a/Modules/Core/Transform/src/otbSpot5SensorModel.cxx b/Modules/Core/Transform/src/otbSpot5SensorModel.cxx
index b9bf13f1894304efc14096873c17f74ae68e4845..15e12272729dbc5c788dedfd62cadd5fb08df268 100644
--- a/Modules/Core/Transform/src/otbSpot5SensorModel.cxx
+++ b/Modules/Core/Transform/src/otbSpot5SensorModel.cxx
@@ -131,7 +131,6 @@ void Spot5SensorModel::WorldToLineSample(const Point3DType& inGeoPoint, Point2DT
   double dlat_du, dlat_dv, dlon_du, dlon_dv;
   double delta_lat, delta_lon, delta_u, delta_v;
   double inverse_norm;
-  bool done = false;
 
   //***
   // Begin iterations:
@@ -158,19 +157,19 @@ void Spot5SensorModel::WorldToLineSample(const Point3DType& inGeoPoint, Point2DT
     dlat_dv = gp_dv[1] - gp[1]; //f
     dlon_dv = gp_dv[0] - gp[0]; //h
     
-    //
-    // Test for convergence:
-    //
-    delta_lat = inGeoPoint[1] - gp[1];
-    delta_lon = inGeoPoint[0] - gp[0];    
 
     //
     // Compute linearized estimate of image point given gp delta:
     //
     inverse_norm = dlat_dv*dlon_du - dlat_du*dlon_dv; // fg-eh
 
-    if (inverse_norm > DBL_EPSILON)
+    if (std::abs(inverse_norm) > DBL_EPSILON)
     {
+      //
+      // Test for convergence:
+      //
+      delta_lat = inGeoPoint[1] - gp[1];
+      delta_lon = inGeoPoint[0] - gp[0];
       delta_u = (-dlon_dv*delta_lat + dlat_dv*delta_lon)/inverse_norm;
       delta_v = ( dlon_du*delta_lat - dlat_du*delta_lon)/inverse_norm;
       ip[0] += delta_u;
@@ -181,11 +180,12 @@ void Spot5SensorModel::WorldToLineSample(const Point3DType& inGeoPoint, Point2DT
       delta_u = 0;
       delta_v = 0;
     }
-    done = (std::abs(delta_u) < PIXEL_THRESHOLD)&&
-           (std::abs(delta_v) < PIXEL_THRESHOLD);
-    if (done) break;
+    if ((std::abs(delta_u) < PIXEL_THRESHOLD) &&
+        (std::abs(delta_v) < PIXEL_THRESHOLD))
+      break;
     iters++;
-  } while (iters < MAX_NUM_ITERATIONS);
+  } while (iters < MAX_NUM_ITERATIONS); /* && ((std::abs(delta_u) < PIXEL_THRESHOLD)
+                                               && (std::abs(delta_v) < PIXEL_THRESHOLD)) */
 
   outLineSample = ip - m_Spot5Param.SubImageOffset;
 
@@ -255,9 +255,11 @@ void Spot5SensorModel::GetBilinearInterpolation(
   else
   {
     const int32_t samp0 = std::distance(T.begin(), first_sup_value);
-    double t = (T[samp0-1]-time)/(T[samp0-1] - (*first_sup_value));
+    double t = (*(first_sup_value-1)-time)/
+               (*(first_sup_value-1) - (*first_sup_value));
+    const auto it_v = V.begin() + samp0;
 
-    li = V[samp0-1] + (V[samp0]-V[samp0-1])*t;
+    li = *(it_v-1) + ((*it_v)-*(it_v-1))*t;
   }
 }