diff --git a/mpp b/mpp
index e04e54352c9cfe78ab47c31d4cb360e6c91f4d4d..20f96e0f440ee73a40da6cacdcc95c6ac77a4494 160000
--- a/mpp
+++ b/mpp
@@ -1 +1 @@
-Subproject commit e04e54352c9cfe78ab47c31d4cb360e6c91f4d4d
+Subproject commit 20f96e0f440ee73a40da6cacdcc95c6ac77a4494
diff --git a/src/coupled/solvers/SegregatedSolver.cpp b/src/coupled/solvers/SegregatedSolver.cpp
index 92f6ad19dd722bcf40f066454424ce414abc0d00..274c7c3fc02d23e6155dc996fbb6e0831d809896 100644
--- a/src/coupled/solvers/SegregatedSolver.cpp
+++ b/src/coupled/solvers/SegregatedSolver.cpp
@@ -272,11 +272,10 @@ bool adaptiveSegregatedSolver::Step(IElphyAssemble &elphyAssemble, IElasticity &
 
   elphyAssemble.ResetTime(mechAssemble.Time(), mechAssemble.LastTStep(), elphyDeltaTime);
   double gammaInfNorm=elphyAssemble.InftyNormOnVertices(v_stretch(elphyValues));
-  vout(2)<<"gammaInfNorm "<<gammaInfNorm<<endl;
   int elphyStepCounter=0;
-  double minGammaInfNorm =0.00001;
-  if (gammaInfNorm<minGammaInfNorm) {
-    while (elphyStepCounter != elphySteps && gammaInfNorm < minGammaInfNorm) {
+
+  if (gammaInfNorm<=0.0) {
+    while (elphyStepCounter != elphySteps && gammaInfNorm <=0.0) {
       //while (!elphyAssemble.IsFinished()) {
       elphySolver->printSolverNameInStep(elphyAssemble, ongoingElphyStep);
       elphySolver->Step(elphyAssemble, elphyValues);
@@ -285,12 +284,12 @@ bool adaptiveSegregatedSolver::Step(IElphyAssemble &elphyAssemble, IElasticity &
       ongoingElphyStep += 1;
       elphyStepCounter += 1;
     }
-  }else if(minGammaInfNorm<=gammaInfNorm && gammaInfNorm<factorMaxGammaInfnorm*maxGammaInfNorm) {
+  }else if(0.0<gammaInfNorm && gammaInfNorm<factorMaxGammaInfnorm*maxGammaInfNorm) {
 
     int numberOfInbetweenTimSteps=int(log2(elphySteps))-1;
     vout(2)<<" numberOfInbetweenTimSteps "<<numberOfInbetweenTimSteps;
     for (int i=0;i<numberOfInbetweenTimSteps;i++){
-      double leftboundary= (double(i)/double(numberOfInbetweenTimSteps))*factorMaxGammaInfnorm*maxGammaInfNorm+minGammaInfNorm;
+      double leftboundary= (double(i)/double(numberOfInbetweenTimSteps))*factorMaxGammaInfnorm*maxGammaInfNorm;
       double rightboundary= (double(i+1)/double(numberOfInbetweenTimSteps))*factorMaxGammaInfnorm*maxGammaInfNorm;
       vout(2)<<" leftboundary "<<leftboundary<<" rightboundary "<<rightboundary;
       if ( leftboundary< gammaInfNorm && gammaInfNorm<= rightboundary){
@@ -310,15 +309,18 @@ bool adaptiveSegregatedSolver::Step(IElphyAssemble &elphyAssemble, IElasticity &
       ongoingElphyStep += 1;
       elphyStepCounter=1;
     }
-  // Projects stretch from elphy to mech
-  cardiacTransfer->Project(u_stretch(mechValues), v_stretch(elphyValues));
-  mechAssemble.UpdateStretch(u_stretch(mechValues));
-  
   if(elphyStepCounter != oldEplpyStepCounter){
     mechAssemble.ResetTime(mechAssemble.Time(), mechAssemble.LastTStep(), getNewMechDeltaTime(elphyStepCounter));
     mechSolver->nonlinearSolver->InitializeMatrices(mechAssemble,u_displacement(mechValues));
+    mechSolver->nonlinearSolver->updateRHSValues(getNewMechDeltaTime(elphyStepCounter));
   }
   oldEplpyStepCounter=elphyStepCounter;
+
+ // Projects stretch from elphy to mech
+  cardiacTransfer->Project(u_stretch(mechValues), v_stretch(elphyValues));
+  mechAssemble.UpdateStretch(u_stretch(mechValues));
+  
+
   vout(2) << "Solving MechStep from " << mechAssemble.Time() << " to "
           << mechAssemble.NextTimeStep(false) << endl;
 
diff --git a/src/elasticity/solvers/ElasticityNewmark.cpp b/src/elasticity/solvers/ElasticityNewmark.cpp
index 637d7bfbffba33340aa854a68e04fa250d031301..8a84a297cb31cf63d7a4d7985298cab84c6b0273 100644
--- a/src/elasticity/solvers/ElasticityNewmark.cpp
+++ b/src/elasticity/solvers/ElasticityNewmark.cpp
@@ -46,7 +46,6 @@ void NewmarkSolver::InitializeMatrices(const IElasticity &assemble, Vector &u){
   *residualMatrix += *displacementMatrix;
 }
 void NewmarkSolver::operator()(const IElasticity &assemble, Vector &u) {
-  vout(2)<<"NewMarkSolver operator dt "<<assemble.StepSize()<<endl;
   double t = assemble.Time();
   NewtonT<IElasticity>::operator()(assemble, u);
   updateOldValues(assemble.StepSize(), u);
diff --git a/src/elasticity/solvers/ElasticityNewmark.hpp b/src/elasticity/solvers/ElasticityNewmark.hpp
index 5d933374b5d5247ac0ead547015e5b298908a00e..19e24df7dec6148192aa43d4f4bb1291807902c9 100644
--- a/src/elasticity/solvers/ElasticityNewmark.hpp
+++ b/src/elasticity/solvers/ElasticityNewmark.hpp
@@ -57,7 +57,7 @@ class NewmarkSolver : public NewtonT<IElasticity> {
 
   NewmarkValues oldValues{};
 
-  void updateRHSValues(double dt);
+  void updateRHSValues(double dt) override;
 
   void updateOldValues(double dt, const Vector &u);
 
diff --git a/tools/solving/CoupledHoreka.py b/tools/solving/CoupledHoreka.py
index f0aa903895829194b86f8ea47ec62782b93e31f3..e9b6c5d96278689ecb1e39113b317e444b5c7fc4 100644
--- a/tools/solving/CoupledHoreka.py
+++ b/tools/solving/CoupledHoreka.py
@@ -211,7 +211,7 @@ def startAll():
 
 def startAdaptiveTimeStep():
     lL=[2]
-    tL=[0,2]
+    tL=[0]
     nL=['SI']
     sdt=0.0004
     startJobs(lL,tL,nL,sdt,'adaptive/',{'Mesh':'TestBiventricleSimpleExcitation_smooth','ElphyProblem':'DeformedBiventricleCoarse','EndTime':0.15,'MechDeltaTime':0.0016,'AdaptiveTimeStepForMech':'true','MaximalGammaInf':0.3,'FactorMaximalGammaInf':0.8})