diff --git a/src/duneminimise.cc b/src/duneminimise.cc
index 6e492fab12e090f1cd17c6ab68f28ac9f318a61d..e0b19bbf55b2da595ad224572e46552cb12c9b7d 100644
--- a/src/duneminimise.cc
+++ b/src/duneminimise.cc
@@ -37,10 +37,9 @@ DEFUN_DLD(duneminimise, args, nargout, "the help string") {
 
   SampleFunctional::SmallVector correction;
   Dune::minimise(J, start, correction);
-  start += correction;
 
   ColumnVector ret(dim);
-  Dune::duneToOctave<dim>(start, ret);
+  Dune::duneToOctave<dim>(correction, ret);
 
   return octave_value(ret);
 }
diff --git a/src/foo.m b/src/foo.m
index f23ed2e69479889dceba1419aa1a6e4db19ae45f..6abab3252c81c942ef39eaf76584441580abade0 100644
--- a/src/foo.m
+++ b/src/foo.m
@@ -24,12 +24,12 @@ oldvec = [279; 0];
 olddiff = [ 0; 0];
 
 for i=1:10
-  newvec=duneminimise(oldvec);
+  newdiff=duneminimise(oldvec);
+  newvec = oldvec + newdiff;
   line([oldvec(1) newvec(1)], ...
        [oldvec(2) newvec(2)], ...
        [duneevaluate(oldvec) duneevaluate(newvec)], ...
        'color', 'r');
-  newdiff = newvec - oldvec;
   printf("Norm of step: %f\n", norm(newdiff));
   if (i != 1)
     printf("Angle between steps: %f degrees\n", acos( dot(olddiff,newdiff) / (norm(olddiff) * norm(newdiff)) ) / pi * 180);