diff --git a/src/sand-wedge.cc b/src/sand-wedge.cc
index 0b77d199495ef46a6d68395aa9933e7292aac1aa..14806f479687fc875ad143dc73b40127999c878c 100644
--- a/src/sand-wedge.cc
+++ b/src/sand-wedge.cc
@@ -488,16 +488,19 @@ int main(int argc, char *argv[]) {
         parset.get<double>("boundary.friction.V0"));
 
     auto const finalTime = parset.get<double>("problem.finalTime");
-    auto const timeSteps = parset.get<size_t>("timeSteps.number");
-    auto const relativeTau = 1.0 / timeSteps;
-    for (size_t timeStep = 1; timeStep <= timeSteps; ++timeStep) {
-      auto const relativeTime = double(timeStep) / double(timeSteps);
+    auto const relativeTau = 1.0 / parset.get<size_t>("timeSteps.number");
+    double relativeTime = 0.0;
+    size_t timeStep = 1;
+    while (relativeTime < 1.0 - 1e-10) {
+
       CoupledTimeStepper<NonlinearFactory, StateUpdater<ScalarVector, Vector>,
                          TimeSteppingScheme<Vector, Matrix, Function, dims>>
       coupledTimeStepper(finalTime, factory, parset, myGlobalFriction,
                          stateUpdater, velocityUpdater, computeExternalForces);
       coupledTimeStepper.step(relativeTime, relativeTau);
 
+      relativeTime += relativeTau;
+
       Vector u, ur, vr;
       ScalarVector alpha;
       velocityUpdater->extractDisplacement(u);
@@ -521,6 +524,7 @@ int main(int argc, char *argv[]) {
                                            body.getPoissonRatio(), u, stress);
         vtkWriter.write(timeStep, ur, vr, alpha, stress);
       }
+      timeStep++;
     }
     Python::stop();
   }