diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 9f98c2b1f63905b1931a2f5e5d64a14f96d27786..3896cd57051b2f604c2c901bbdce1ff51360c272 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -249,6 +249,7 @@ int main(int argc, char *argv[]) {
           auto multigridStep = mySolver.getSolver();
           multigridStep->setProblem(u4_diff, myBlockProblem);
 
+          VectorType const u4_diff_old = u4_diff;
           LoopSolver<VectorType> overallSolver(
               multigridStep, parset.get<size_t>("solver.tnnmg.maxiterations"),
               solver_tolerance, &energyNorm, verbosity,
@@ -270,6 +271,8 @@ int main(int argc, char *argv[]) {
               (*s4_new)[i] = compute_state_update(h, unorm, L, s4_old[i]);
             }
           }
+          if (energyNorm.diff(u4_diff_old, u4_diff) < 1e-14) // TODO
+            break;
         }
 
         if (parset.get<bool>("printEvolution"))