diff --git a/NonLinearSolver/materialLaw/mlawHyperelastic.cpp b/NonLinearSolver/materialLaw/mlawHyperelastic.cpp
index 60d192e0a37cbde0b9464e1a5ab9ae1b2ae07238..bcecf02a594bc5a0c58b08517f9185b58c4a8615 100644
--- a/NonLinearSolver/materialLaw/mlawHyperelastic.cpp
+++ b/NonLinearSolver/materialLaw/mlawHyperelastic.cpp
@@ -859,7 +859,7 @@ void mlawPowerYieldHyper::predictorCorrector_nonAssociatedFlow(const STensor3& F
       q1->getRefToDissipationActive() = true;
        // plasticity
       int ite = 0;
-      int maxite = 100; // maximal number of iters
+      int maxite = 1000; // maximal number of iters
 
 
       //Msg::Error("plasticity occurs f = %e",f);
@@ -919,8 +919,13 @@ void mlawPowerYieldHyper::predictorCorrector_nonAssociatedFlow(const STensor3& F
 
         if(ite > maxite){
           Msg::Error("No convergence for plastic correction in mlawPowerYieldHyper nonAssociatedFlow Maxwell iter = %d, f = %e!!",ite,f);
-          P(0,0) = P(1,1) = P(2,2) = sqrt(-1.);
-          return;
+	  if(fabs(f)<100.*_tol)
+	    break;
+	  else
+	  {
+            P(0,0) = P(1,1) = P(2,2) = sqrt(-1.);
+            return;
+	  }
         }
       };