diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 224411e5b317fc71aacaae6d12d7aadf797efe71..91458ad6b1aa9e01e9b98c403f385f9b7518d473 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -390,6 +390,8 @@ int main(int argc, char *argv[]) {
       // Since the velocity explodes in the quasistatic case, use the
       // displacement as a convergence criterion
       VectorType u_saved;
+      double const fixedPointTolerance =
+          parset.get<double>("solver.tnnmg.fixed_point_tolerance");
       for (size_t state_fpi = 1; state_fpi <= state_fpi_max; ++state_fpi) {
         solveDisplacementProblem(problem_iterate, alpha);
 
@@ -404,16 +406,16 @@ int main(int argc, char *argv[]) {
         if (parset.get<bool>("printProgress")) {
           std::cerr << '.';
           std::cerr.flush();
-        };
-        if (state_fpi > 1 &&
-            energyNorm.diff(u_saved, u) <
-                parset.get<double>("solver.tnnmg.fixed_point_tolerance"))
-          break;
-
-        u_saved = u;
-
+        }
+        if (state_fpi > 1) {
+          double const correctionNorm = energyNorm.diff(u_saved, u);
+          if (correctionNorm < fixedPointTolerance)
+            break;
+        }
         if (state_fpi == state_fpi_max)
           DUNE_THROW(Dune::Exception, "FPI failed to converge");
+
+        u_saved = u;
       }
       if (parset.get<bool>("printProgress"))
         std::cerr << std::endl;