diff --git a/integrators/mps.py b/integrators/mps.py
index 98b0701ad3936adb7937f5d772df2327c1df4606..33138a29a67237c8af827d5b4bcc7150f6b80e59 100644
--- a/integrators/mps.py
+++ b/integrators/mps.py
@@ -312,6 +312,32 @@ class MPS(_integrator._Integrator, \
     self._RHS = (2.0 / self._k) * (self._Mh_diag * self._Mag.m.vec.FV().NumPy())
 
 
+#------------------------------------------------------------------------------#
+
+
+  def _UpdateGuess(self):
+    if(self.parameters.guessType == "old"):
+      self._UpdateGuess_Old()
+    elif(self.parameters.guessType == None):
+      self._UpdateGuess_None()
+    else:
+      raise ValueError("guessType = ", self.parameters.guessType, "not known")
+
+
+#------------------------------------------------------------------------------#
+
+
+  def _UpdateGuess_Old(self):
+    self._guess = self._Mag_eta.m.vec.FV().NumPy()
+
+
+#------------------------------------------------------------------------------#
+
+
+  def _UpdateGuess_None(self):
+    self._guess = None
+
+
 #------------------------------------------------------------------------------#
 
 
@@ -340,9 +366,12 @@ class MPS(_integrator._Integrator, \
       self._Compute_LHS_iter()
       LHS = LHS_fix + self._LHS_iter
 
+      self._UpdateGuess()
+
       self._Mag_eta.m.vec.FV().NumPy()[:], succ \
-        = scipy.sparse.linalg.gmres(LHS, RHS , x0=None \
-        , tol=self._solvetol, maxiter=4000, M=self._preconditioner, callback=self._callback)
+        = scipy.sparse.linalg.gmres(LHS, RHS \
+        , x0=self._guess, tol=self._solvetol, maxiter=4000 \
+        , M=self._preconditioner, callback=self._callback)
       
       diff_gf.vec.FV().NumPy()[:] = self._Mag_eta.m.vec.FV().NumPy()-oldIterate
       itError = sqrt( Integrate(diff_cf*diff_cf, self._GetMesh()) )