diff --git a/src/solvers/linear/krylov/tnlGMRESSolver_impl.h b/src/solvers/linear/krylov/tnlGMRESSolver_impl.h
index 770cb26b31f1e83db4d35df6ff57a37fadfa37ac..5b1e4fc90d9868aba3236d4a4bd57db466fe83d4 100644
--- a/src/solvers/linear/krylov/tnlGMRESSolver_impl.h
+++ b/src/solvers/linear/krylov/tnlGMRESSolver_impl.h
@@ -251,14 +251,14 @@ bool tnlGMRESSolver< Matrix, Preconditioner > :: solve( const Vector& b, Vector&
                              sn[ i ] );
 
          this->setResidue( fabs( s[ i + 1 ] ) / normb );
-         if( this->nextIteration() ) {
-            this->refreshSolverMonitor();
-         }
-         else {
+         if( this->getIterations() > this->getMinIterations() && this->getResidue() < this->getConvergenceResidue() ) {
             update( i, m, _H, _s, _v, x );
             this->refreshSolverMonitor( true );
             return this->checkConvergence();
          }
+         else {
+            this->refreshSolverMonitor();
+         }
       }
       update( m - 1, m, _H, _s, _v, x );