diff --git a/dune/solvers/solvers/loopsolver.cc b/dune/solvers/solvers/loopsolver.cc
index b103b829fc3c687b6c71966c1e2de1e5ab3e0118..5dee67692f51919d127260289b42730182cdbacf 100644
--- a/dune/solvers/solvers/loopsolver.cc
+++ b/dune/solvers/solvers/loopsolver.cc
@@ -105,7 +105,7 @@ void ::LoopSolver<VectorType, BitVectorType>::solve()
         }
 
         // Turn the error into the relative error, if requested
-        if (this->useRelativeError_)
+        if (this->useRelativeError_ && !std::isnan(error/oldNorm))
             error = error / oldNorm;
 
         if (!isinf(convRate) && !isnan(convRate) && i>0) {