diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 0e0ce17a09ce6971d47c9280077ff922005083f1..b44d66872ca020ba0ad5f367e60336a6fd8f8ff7 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -338,8 +338,7 @@ int main(int argc, char *argv[]) {
         timeSteppingScheme->setup(ell, tau, time, problem_rhs, problem_iterate,
                                   problem_A);
 
-        VectorType ud_saved(finestSize);
-        ud_saved = 0.0; // FIXME
+        VectorType u_saved;
         auto const state_fpi_max =
             parset.get<size_t>("solver.tnnmg.fixed_point_iterations");
         for (size_t state_fpi = 1; state_fpi <= state_fpi_max; ++state_fpi) {
@@ -388,11 +387,12 @@ int main(int argc, char *argv[]) {
             std::cerr << '.';
             std::cerr.flush();
           }
-          if (energyNorm.diff(ud_saved, ud) <
-              parset.get<double>("solver.tnnmg.fixed_point_tolerance"))
+          if (state_fpi > 1 &&
+              energyNorm.diff(u_saved, u) <
+                  parset.get<double>("solver.tnnmg.fixed_point_tolerance"))
             break;
           else
-            ud_saved = ud;
+            u_saved = u;
 
           if (state_fpi == state_fpi_max)
             std::cerr << "[ref = " << refinements