diff --git a/dumux/common/splinecommon_.hh b/dumux/common/splinecommon_.hh
index 2a1529f971b2ddfbca1e0eed2154967a157cb75b..691bf1efa769f32aabaff17a1641256d23ce5ed6 100644
--- a/dumux/common/splinecommon_.hh
+++ b/dumux/common/splinecommon_.hh
@@ -145,12 +145,12 @@ public:
         // handle extrapolation
         if (extrapolate) {
             if (x < xMin()) {
-                Scalar m = evalDerivative(xMin(), /*segmentIdx=*/0);
+                Scalar m = evalDerivative_(xMin(), /*segmentIdx=*/0);
                 Scalar y0 = y_(0);
                 return y0 + m*(x - xMin());
             }
             else if (x > xMax()) {
-                Scalar m = evalDerivative(xMax(), /*segmentIdx=*/numSamples_()-1);
+                Scalar m = evalDerivative_(xMax(), /*segmentIdx=*/numSamples_()-2);
                 Scalar y0 = y_(numSamples_()-1);
                 return y0 + m*(x - xMax());
             }
@@ -179,7 +179,7 @@ public:
             if (Dune::FloatCmp::le(x, xMin()))
                 return evalDerivative_(xMin(), 0);
             else if (Dune::FloatCmp::ge(x, xMax()))
-                return evalDerivative_(xMax(), numSamples_() - 1);
+                return evalDerivative_(xMax(), numSamples_() - 2);
         }
 
         return evalDerivative_(x, segmentIdx_(x));