diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 09eea49e5cd9e9dff1327e2be398eeb522e84e81..4d08d013d4fd0ff028035fe68613f70cb2f59ad6 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -275,17 +275,11 @@ int main(int argc, char *argv[]) {
         std::cout.flush();
       }
 
-      // b = neumann
-      assemble_neumann<GridType, GridView, SmallVector, P1Basis>(
-          leafView, p1Basis, neumannNodes, b4, functions.get("sampleFunction"),
-          h * run);
-      b5 = b4;
-
-      // b -= linear update
-      stiffnessMatrix.mmv(u4, b4);
-      stiffnessMatrix.mmv(u5, b5);
-
       if (parset.get<bool>("solver.tnnmg.use")) {
+        assemble_neumann<GridType, GridView, SmallVector, P1Basis>(
+            leafView, p1Basis, neumannNodes, b4,
+            functions.get("sampleFunction"), h * run);
+        stiffnessMatrix.mmv(u4, b4);
         for (int state_fpi = 0;
              state_fpi < parset.get<int>("solver.tnnmg.fixed_point_iterations");
              ++state_fpi) {
@@ -339,6 +333,10 @@ int main(int argc, char *argv[]) {
       s4_old = *s4_new;
 
       if (parset.get<bool>("benchmarks.fpi.enable")) {
+        assemble_neumann<GridType, GridView, SmallVector, P1Basis>(
+            leafView, p1Basis, neumannNodes, b5,
+            functions.get("sampleFunction"), h * run);
+        stiffnessMatrix.mmv(u5, b5);
         for (int state_fpi = 0;
              state_fpi < parset.get<int>("benchmarks.fpi.iterations");
              ++state_fpi) {