diff --git a/src/ZMPRefTrajectoryGeneration/DynamicFilter.cpp b/src/ZMPRefTrajectoryGeneration/DynamicFilter.cpp
index b4ce256bc7f141bbf31782bee9bf9f6c4accb447..e102747c2b48ce83419edb60326fdca71ab6e508 100644
--- a/src/ZMPRefTrajectoryGeneration/DynamicFilter.cpp
+++ b/src/ZMPRefTrajectoryGeneration/DynamicFilter.cpp
@@ -213,10 +213,10 @@ int DynamicFilter::OnLinefilter(
                  i);
   }
   int inc = (int)round(interpolationPeriod_/controlPeriod_) ;
-  ZMPMB_vec_[0][0]=inputZMPTraj_deq_[0].px  ;
-  ZMPMB_vec_[0][1]=inputZMPTraj_deq_[0].py  ;
   ZMPMB_vec_[0][0]=inputZMPTraj_deq_[0].px;
   ZMPMB_vec_[0][1]=inputZMPTraj_deq_[0].py;
+  ZMPMB_vec_[1][0]=inputZMPTraj_deq_[0].px;
+  ZMPMB_vec_[1][1]=inputZMPTraj_deq_[0].py;
 
   unsigned int N1 = (ZMPMB_vec_.size()-1)*inc +1 ;
   if(false)
@@ -414,9 +414,12 @@ void DynamicFilter::ComputeZMPMB(
                      ZMPMBConfiguration_, ZMPMBVelocity_, ZMPMBAcceleration_,
                      samplingPeriod, stage, iteration) ;
 
-  InverseDynamics(ZMPMBConfiguration_, ZMPMBVelocity_, ZMPMBAcceleration_);
+  if(iteration>=2)
+  {
+    InverseDynamics(ZMPMBConfiguration_, ZMPMBVelocity_, ZMPMBAcceleration_);
 
-  ExtractZMP(ZMPMB);
+    ExtractZMP(ZMPMB);
+  }
 
   return ;
 }
diff --git a/src/ZMPRefTrajectoryGeneration/nmpc_generator.cpp b/src/ZMPRefTrajectoryGeneration/nmpc_generator.cpp
index 4387bbfc43c66bc344b27f7719c2ed9c6d69be56..fd8342d1e7b72cda6230c8b47e1cf045c9e999a9 100644
--- a/src/ZMPRefTrajectoryGeneration/nmpc_generator.cpp
+++ b/src/ZMPRefTrajectoryGeneration/nmpc_generator.cpp
@@ -385,7 +385,7 @@ void NMPCgenerator::solve_qp(){
   */
 
   // force the solver to use the maximum time for computing the solution
-  cput_[0] = 0.0003;
+  cput_[0] = 0.0008;
   nwsr_ = 100000 ;
   //qpOASES::returnValue ret, error ;
   if (!isQPinitialized_)
diff --git a/tests/CommonTools.cpp b/tests/CommonTools.cpp
index 6f19477fac1a1c28c7192d052883ec856a0643b5..1173140aa9835075d8297cdafa3a3c900ca5ef45 100644
--- a/tests/CommonTools.cpp
+++ b/tests/CommonTools.cpp
@@ -74,7 +74,7 @@ namespace PatternGeneratorJRL {
 	  aPGI.ParseCmd(strm);
 	}
       // Evaluate current state of the robot in the PG.
-      COMState   lStartingCOMPosition;
+      COMState lStartingCOMPosition;
       MAL_S3_VECTOR_TYPE(double)  lStartingZMPPosition;
       MAL_VECTOR_TYPE(double)  lStartingWaistPose;
       FootAbsolutePosition  InitLeftFootAbsPos;
diff --git a/tests/TestNaveau2015.cpp b/tests/TestNaveau2015.cpp
index c96556c9f507e10d04d50daac43b9529ce85dbd2..6b70c404494cfdb659b54f91eaf755d502052415 100644
--- a/tests/TestNaveau2015.cpp
+++ b/tests/TestNaveau2015.cpp
@@ -197,6 +197,8 @@ public:
     err_zmp_x.clear() ;
     err_zmp_y.clear() ;
     resetfiles=0;
+
+    m_DebugFGPI=false;
   }
 
   ~TestNaveau2015()
@@ -474,64 +476,64 @@ protected:
 
   void fillInDebugFiles()
   {
-    TestObject::fillInDebugFiles();
-
-    /// \brief calculate, from the CoM of computed by the preview control,
-    ///    the corresponding articular position, velocity and acceleration
-    /// ------------------------------------------------------------------
-    MAL_VECTOR_DIM(aCOMState,double,6);
-    MAL_VECTOR_DIM(aCOMSpeed,double,6);
-    MAL_VECTOR_DIM(aCOMAcc,double,6);
-    MAL_VECTOR_DIM(aLeftFootPosition,double,5);
-    MAL_VECTOR_DIM(aRightFootPosition,double,5);
-
-    aCOMState(0) = m_OneStep.finalCOMPosition.x[0];      aCOMSpeed(0) = m_OneStep.finalCOMPosition.x[1];      aCOMAcc(0) = m_OneStep.finalCOMPosition.x[2];
-    aCOMState(1) = m_OneStep.finalCOMPosition.y[0];      aCOMSpeed(1) = m_OneStep.finalCOMPosition.y[1];      aCOMAcc(1) = m_OneStep.finalCOMPosition.y[2];
-    aCOMState(2) = m_OneStep.finalCOMPosition.z[0];      aCOMSpeed(2) = m_OneStep.finalCOMPosition.z[1];      aCOMAcc(2) = m_OneStep.finalCOMPosition.z[2];
-    aCOMState(3) = m_OneStep.finalCOMPosition.roll[0]  * 180/M_PI  ;  aCOMSpeed(3) = m_OneStep.finalCOMPosition.roll[1] /** * 180/M_PI  */ ;  aCOMAcc(3) = m_OneStep.finalCOMPosition.roll[2]/** * 180/M_PI  */ ;
-    aCOMState(4) = m_OneStep.finalCOMPosition.pitch[0] * 180/M_PI  ;  aCOMSpeed(4) = m_OneStep.finalCOMPosition.pitch[1]/** * 180/M_PI  */ ;  aCOMAcc(4) = m_OneStep.finalCOMPosition.pitch[2]/** * 180/M_PI  */ ;
-    aCOMState(5) = m_OneStep.finalCOMPosition.yaw[0] *180/M_PI;  aCOMSpeed(5) = m_OneStep.finalCOMPosition.yaw[1]/** * 180/M_PI  */ ; aCOMAcc(5) = m_OneStep.finalCOMPosition.yaw[2] /** * 180/M_PI  */;
-
-    aLeftFootPosition(0) = m_OneStep.LeftFootPosition.x;      aRightFootPosition(0) = m_OneStep.RightFootPosition.x;
-    aLeftFootPosition(1) = m_OneStep.LeftFootPosition.y;      aRightFootPosition(1) = m_OneStep.RightFootPosition.y;
-    aLeftFootPosition(2) = m_OneStep.LeftFootPosition.z;      aRightFootPosition(2) = m_OneStep.RightFootPosition.z;
-    aLeftFootPosition(3) = m_OneStep.LeftFootPosition.theta;  aRightFootPosition(3) = m_OneStep.RightFootPosition.theta;
-    aLeftFootPosition(4) = m_OneStep.LeftFootPosition.omega;  aRightFootPosition(4) = m_OneStep.RightFootPosition.omega;
-    ComAndFootRealization_->setSamplingPeriod(0.005);
-    ComAndFootRealization_->ComputePostureForGivenCoMAndFeetPosture(aCOMState, aCOMSpeed, aCOMAcc,
-                                                                    aLeftFootPosition,
-                                                                    aRightFootPosition,
-                                                                    m_CurrentConfiguration,
-                                                                    m_CurrentVelocity,
-                                                                    m_CurrentAcceleration,
-                                                                    20,
-                                                                    1);
-
-    m_CurrentConfiguration(28)= 0.174532925 ;     // RARM_JOINT6
-    m_CurrentConfiguration(35)= 0.174532925 ;     // LARM_JOINT6
-
-    // compute the 6D force applied at the CoM
-    for(unsigned int i = 0 ; i < MAL_VECTOR_SIZE(m_CurrentConfiguration) ; ++i)
+
+    if (m_DebugFGPI)
     {
-      q_(i,0)   = m_CurrentConfiguration (i);
-      dq_(i,0)  = m_CurrentVelocity      (i);
-      ddq_(i,0) = m_CurrentAcceleration  (i);
-    }
-    metapod::rnea< Robot_Model, true >::run(hrp2_14_, q_, dq_, ddq_);
-    vector<double> zmpmb = vector<double>(3,0.0);
-    // extract the CoM momentum and forces
-    RootNode & node_waist = boost::fusion::at_c< Robot_Model::BODY >(hrp2_14_.nodes);
-    com_tensor_ = node_waist.body.iX0.applyInv(node_waist.joint.f);
+      TestObject::fillInDebugFiles();
+      /// \brief calculate, from the CoM of computed by the preview control,
+      ///    the corresponding articular position, velocity and acceleration
+      /// ------------------------------------------------------------------
+      MAL_VECTOR_DIM(aCOMState,double,6);
+      MAL_VECTOR_DIM(aCOMSpeed,double,6);
+      MAL_VECTOR_DIM(aCOMAcc,double,6);
+      MAL_VECTOR_DIM(aLeftFootPosition,double,5);
+      MAL_VECTOR_DIM(aRightFootPosition,double,5);
+
+      aCOMState(0) = m_OneStep.finalCOMPosition.x[0];      aCOMSpeed(0) = m_OneStep.finalCOMPosition.x[1];      aCOMAcc(0) = m_OneStep.finalCOMPosition.x[2];
+      aCOMState(1) = m_OneStep.finalCOMPosition.y[0];      aCOMSpeed(1) = m_OneStep.finalCOMPosition.y[1];      aCOMAcc(1) = m_OneStep.finalCOMPosition.y[2];
+      aCOMState(2) = m_OneStep.finalCOMPosition.z[0];      aCOMSpeed(2) = m_OneStep.finalCOMPosition.z[1];      aCOMAcc(2) = m_OneStep.finalCOMPosition.z[2];
+      aCOMState(3) = m_OneStep.finalCOMPosition.roll[0]  * 180/M_PI  ;  aCOMSpeed(3) = m_OneStep.finalCOMPosition.roll[1] /** * 180/M_PI  */ ;  aCOMAcc(3) = m_OneStep.finalCOMPosition.roll[2]/** * 180/M_PI  */ ;
+      aCOMState(4) = m_OneStep.finalCOMPosition.pitch[0] * 180/M_PI  ;  aCOMSpeed(4) = m_OneStep.finalCOMPosition.pitch[1]/** * 180/M_PI  */ ;  aCOMAcc(4) = m_OneStep.finalCOMPosition.pitch[2]/** * 180/M_PI  */ ;
+      aCOMState(5) = m_OneStep.finalCOMPosition.yaw[0] *180/M_PI;  aCOMSpeed(5) = m_OneStep.finalCOMPosition.yaw[1]/** * 180/M_PI  */ ; aCOMAcc(5) = m_OneStep.finalCOMPosition.yaw[2] /** * 180/M_PI  */;
+
+      aLeftFootPosition(0) = m_OneStep.LeftFootPosition.x;      aRightFootPosition(0) = m_OneStep.RightFootPosition.x;
+      aLeftFootPosition(1) = m_OneStep.LeftFootPosition.y;      aRightFootPosition(1) = m_OneStep.RightFootPosition.y;
+      aLeftFootPosition(2) = m_OneStep.LeftFootPosition.z;      aRightFootPosition(2) = m_OneStep.RightFootPosition.z;
+      aLeftFootPosition(3) = m_OneStep.LeftFootPosition.theta;  aRightFootPosition(3) = m_OneStep.RightFootPosition.theta;
+      aLeftFootPosition(4) = m_OneStep.LeftFootPosition.omega;  aRightFootPosition(4) = m_OneStep.RightFootPosition.omega;
+      ComAndFootRealization_->setSamplingPeriod(0.005);
+      ComAndFootRealization_->ComputePostureForGivenCoMAndFeetPosture(aCOMState, aCOMSpeed, aCOMAcc,
+                                                                      aLeftFootPosition,
+                                                                      aRightFootPosition,
+                                                                      m_CurrentConfiguration,
+                                                                      m_CurrentVelocity,
+                                                                      m_CurrentAcceleration,
+                                                                      20,
+                                                                      1);
+
+      m_CurrentConfiguration(28)= 0.174532925 ;     // RARM_JOINT6
+      m_CurrentConfiguration(35)= 0.174532925 ;     // LARM_JOINT6
+
+      // compute the 6D force applied at the CoM
+      for(unsigned int i = 0 ; i < MAL_VECTOR_SIZE(m_CurrentConfiguration) ; ++i)
+      {
+        q_(i,0)   = m_CurrentConfiguration (i);
+        dq_(i,0)  = m_CurrentVelocity      (i);
+        ddq_(i,0) = m_CurrentAcceleration  (i);
+      }
+      metapod::rnea< Robot_Model, true >::run(hrp2_14_, q_, dq_, ddq_);
+      vector<double> zmpmb = vector<double>(3,0.0);
+      // extract the CoM momentum and forces
+      RootNode & node_waist = boost::fusion::at_c< Robot_Model::BODY >(hrp2_14_.nodes);
+      com_tensor_ = node_waist.body.iX0.applyInv(node_waist.joint.f);
 
-    // compute the Multibody ZMP
-    zmpmb[0] = - com_tensor_.n()[1] / com_tensor_.f()[2] ;
-    zmpmb[1] =   com_tensor_.n()[0] / com_tensor_.f()[2] ;
+      // compute the Multibody ZMP
+      zmpmb[0] = - com_tensor_.n()[1] / com_tensor_.f()[2] ;
+      zmpmb[1] =   com_tensor_.n()[0] / com_tensor_.f()[2] ;
 
-    err_zmp_x.push_back(zmpmb[0]-m_OneStep.ZMPTarget(0)) ;
-    err_zmp_y.push_back(zmpmb[1]-m_OneStep.ZMPTarget(1)) ;
+      err_zmp_x.push_back(zmpmb[0]-m_OneStep.ZMPTarget(0)) ;
+      err_zmp_y.push_back(zmpmb[1]-m_OneStep.ZMPTarget(1)) ;
 
-    if (m_DebugFGPI)
-    {
       ofstream aof;
       string aFileName;
       aFileName = m_TestName;
@@ -596,82 +598,81 @@ protected:
       }
       aof << endl;
       aof.close();
-    }
 
-    /// \brief Create file .hip .pos .zmp
-    /// ---------------------------------
-    ofstream aof ;
-    string aFileName = m_TestName + ".pos" ;
-    if ( iteration == 0 )
-    {
-      aof.open(aFileName.c_str(),ofstream::out);
+      /// \brief Create file .hip .pos .zmp
+      /// ---------------------------------
+      aFileName = m_TestName + ".pos" ;
+      if ( iteration == 0 )
+      {
+        aof.open(aFileName.c_str(),ofstream::out);
+        aof.close();
+      }
+      aof.open(aFileName.c_str(),ofstream::app);
+      aof.precision(8);
+      aof.setf(ios::scientific, ios::floatfield);
+      aof << filterprecision( iteration * 0.005 ) << " "  ; // 1
+      for(unsigned int i = 6 ; i < m_CurrentConfiguration.size() ; i++){
+        aof << filterprecision( m_CurrentConfiguration(i) ) << " "  ; // 2
+      }
+      for(unsigned int i = 0 ; i < 9 ; i++){
+        aof << 0.0 << " "  ;
+      }
+      aof << 0.0  << endl ;
       aof.close();
-    }
-    aof.open(aFileName.c_str(),ofstream::app);
-    aof.precision(8);
-    aof.setf(ios::scientific, ios::floatfield);
-    aof << filterprecision( iteration * 0.005 ) << " "  ; // 1
-    for(unsigned int i = 6 ; i < m_CurrentConfiguration.size() ; i++){
-      aof << filterprecision( m_CurrentConfiguration(i) ) << " "  ; // 2
-    }
-    for(unsigned int i = 0 ; i < 9 ; i++){
-      aof << 0.0 << " "  ;
-    }
-    aof << 0.0  << endl ;
-    aof.close();
 
-    aFileName = m_TestName + ".hip" ;
-    if ( iteration == 0 ){
-      aof.open(aFileName.c_str(),ofstream::out);
+      aFileName = m_TestName + ".hip" ;
+      if ( iteration == 0 ){
+        aof.open(aFileName.c_str(),ofstream::out);
+        aof.close();
+      }
+      aof.open(aFileName.c_str(),ofstream::app);
+      aof.precision(8);
+      aof.setf(ios::scientific, ios::floatfield);
+      aof << filterprecision( iteration * 0.005 ) << " "  ;                 // 1
+      aof << filterprecision( m_OneStep.finalCOMPosition.roll[0]) << " "  ; // 2
+      aof << filterprecision( m_OneStep.finalCOMPosition.pitch[0]) << " "  ;// 3
+      aof << filterprecision( m_OneStep.finalCOMPosition.yaw[0]) ;          // 4
+      aof << endl ;
       aof.close();
-    }
-    aof.open(aFileName.c_str(),ofstream::app);
-    aof.precision(8);
-    aof.setf(ios::scientific, ios::floatfield);
-    aof << filterprecision( iteration * 0.005 ) << " "  ;                 // 1
-    aof << filterprecision( m_OneStep.finalCOMPosition.roll[0]) << " "  ; // 2
-    aof << filterprecision( m_OneStep.finalCOMPosition.pitch[0]) << " "  ;// 3
-    aof << filterprecision( m_OneStep.finalCOMPosition.yaw[0]) ;          // 4
-    aof << endl ;
-    aof.close();
-
-    aFileName = m_TestName + ".waist" ;
-    if ( iteration == 0 ){
-      aof.open(aFileName.c_str(),ofstream::out);
+
+      aFileName = m_TestName + ".waist" ;
+      if ( iteration == 0 ){
+        aof.open(aFileName.c_str(),ofstream::out);
+        aof.close();
+      }
+      aof.open(aFileName.c_str(),ofstream::app);
+      aof.precision(8);
+      aof.setf(ios::scientific, ios::floatfield);
+      aof << filterprecision( iteration * 0.005 ) << " "  ;                           // 1
+      aof << filterprecision( m_OneStep.finalCOMPosition.roll[0]) << " "  ;  // 2
+      aof << filterprecision( m_OneStep.finalCOMPosition.pitch[0]) << " "  ;// 3
+      aof << filterprecision( m_OneStep.finalCOMPosition.yaw[0]) ;          // 4
+      aof << endl ;
       aof.close();
-    }
-    aof.open(aFileName.c_str(),ofstream::app);
-    aof.precision(8);
-    aof.setf(ios::scientific, ios::floatfield);
-    aof << filterprecision( iteration * 0.005 ) << " "  ;                           // 1
-    aof << filterprecision( m_OneStep.finalCOMPosition.roll[0]) << " "  ;  // 2
-    aof << filterprecision( m_OneStep.finalCOMPosition.pitch[0]) << " "  ;// 3
-    aof << filterprecision( m_OneStep.finalCOMPosition.yaw[0]) ;          // 4
-    aof << endl ;
-    aof.close();
-
-    aFileName = m_TestName + ".zmp" ;
-    if ( iteration == 0 ){
-      aof.open(aFileName.c_str(),ofstream::out);
+
+      aFileName = m_TestName + ".zmp" ;
+      if ( iteration == 0 ){
+        aof.open(aFileName.c_str(),ofstream::out);
+        aof.close();
+      }
+      FootAbsolutePosition aSupportState;
+      if (m_OneStep.LeftFootPosition.stepType < 0 )
+        aSupportState = m_OneStep.LeftFootPosition ;
+      else
+        aSupportState = m_OneStep.RightFootPosition ;
+
+      aof.open(aFileName.c_str(),ofstream::app);
+      aof.precision(8);
+      aof.setf(ios::scientific, ios::floatfield);
+      aof << filterprecision( iteration * 0.005 ) << " "  ;                                 // 1
+      aof << filterprecision( m_OneStep.ZMPTarget(0) - m_CurrentConfiguration(0)) << " "  ; // 2
+      aof << filterprecision( m_OneStep.ZMPTarget(1) - m_CurrentConfiguration(1) ) << " "  ;// 3
+      aof << filterprecision( aSupportState.z  - m_CurrentConfiguration(2))  ;              // 4
+      aof << endl ;
       aof.close();
+
+      iteration++;
     }
-    FootAbsolutePosition aSupportState;
-    if (m_OneStep.LeftFootPosition.stepType < 0 )
-      aSupportState = m_OneStep.LeftFootPosition ;
-    else
-      aSupportState = m_OneStep.RightFootPosition ;
-
-    aof.open(aFileName.c_str(),ofstream::app);
-    aof.precision(8);
-    aof.setf(ios::scientific, ios::floatfield);
-    aof << filterprecision( iteration * 0.005 ) << " "  ;                                 // 1
-    aof << filterprecision( m_OneStep.ZMPTarget(0) - m_CurrentConfiguration(0)) << " "  ; // 2
-    aof << filterprecision( m_OneStep.ZMPTarget(1) - m_CurrentConfiguration(1) ) << " "  ;// 3
-    aof << filterprecision( aSupportState.z  - m_CurrentConfiguration(2))  ;              // 4
-    aof << endl ;
-    aof.close();
-
-    iteration++;
   }
 
   void SpecializedRobotConstructor(   CjrlHumanoidDynamicRobot *& aHDR, CjrlHumanoidDynamicRobot *& aDebugHDR )