diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 678a7c8e300e42cc9f8d7ebf352c38cb6ef45b24..918f4994e51c955a3f3a9959b21e75b521de8b15 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -318,6 +318,7 @@ int main(int argc, char *argv[]) {
         parset.get<double>("boundary.friction.L"));
 
     Vector v = v_initial;
+    Vector v_m(fineVertexCount);
     ScalarVector alpha(fineVertexCount);
 
     auto const timeSteps = parset.get<size_t>("timeSteps.number"),
@@ -378,7 +379,11 @@ int main(int argc, char *argv[]) {
       ScalarVector alpha_saved;
       double lastStateCorrection;
       for (size_t stateFPI = 1; stateFPI <= maximumStateFPI; ++stateFPI) {
-        stateUpdater->solve(v);
+        timeSteppingScheme->extractOldVelocity(v_m);
+        v_m *= 0.5;
+        Arithmetic::addProduct(v_m, 0.5, v);
+
+        stateUpdater->solve(v_m);
         stateUpdater->extractLogState(alpha);
 
         if (stateFPI == 1)