diff --git a/src/myblockproblem.hh b/src/myblockproblem.hh
index a294346c377ef02cec014052f7f259d5e9b3e630..30942301e25b97b960276bc1761bf6f78234ee20 100644
--- a/src/myblockproblem.hh
+++ b/src/myblockproblem.hh
@@ -108,8 +108,8 @@ class MyBlockProblem<ConvexProblemTypeTEMPLATE>::IterateObject {
         int const j = it.index();
         if (j == m)
           localA = &(*it); // localA = &A[m][m]
-
-        it->mmv(u[j], localb); // localb += A[m][j] * u[j]
+        else
+          it->mmv(u[j], localb); // localb += A[m][j] * u[j]
       }
       assert(localA != NULL);
 
@@ -125,7 +125,7 @@ class MyBlockProblem<ConvexProblemTypeTEMPLATE>::IterateObject {
         Dune::minimise(localJ, ui_copy, correction);
         ui_copy += correction;
       }
-      ui += ui_copy;
+      ui = ui_copy;
       return;
     }