diff --git a/src/Mathematics/AnalyticalZMPCOGTrajectory.cpp b/src/Mathematics/AnalyticalZMPCOGTrajectory.cpp
index 2568bae932f64ad978a053d980e91d4f5ff1e3e6..99c63b31078e71d8ed4ee4d973a32ed94ebfeb0e 100644
--- a/src/Mathematics/AnalyticalZMPCOGTrajectory.cpp
+++ b/src/Mathematics/AnalyticalZMPCOGTrajectory.cpp
@@ -178,7 +178,7 @@ namespace PatternGeneratorJRL
     deltaj = t- m_AbsoluteTimeReference - m_RefTime[j];
 	  
     r = cosh(m_omegaj[j]*deltaj) * m_V[j] +
-      sinh(m_omegaj[j]*deltaj) * m_W[j];
+        sinh(m_omegaj[j]*deltaj) * m_W[j];
     r += m_ListOfCOGPolynomials[j]->Compute(deltaj);
     return true;
   }
@@ -189,9 +189,21 @@ namespace PatternGeneratorJRL
     deltaj = t- m_AbsoluteTimeReference - m_RefTime[j];
 	
     r = m_omegaj[j] * sinh(m_omegaj[j]*deltaj) * m_V[j] +
-	      m_omegaj[j] * cosh(m_omegaj[j]*deltaj) * m_W[j];  
+        m_omegaj[j] * cosh(m_omegaj[j]*deltaj) * m_W[j];
     r += m_ListOfCOGPolynomials[j]->ComputeDerivative(deltaj);
-    ODEBUG("ComputeCOMPSeed: " << r);
+    ODEBUG("ComputeCOMSpeed: " << r);
+    return true;
+  }
+
+  bool AnalyticalZMPCOGTrajectory::ComputeCOMAcceleration(double t, double &r, int j)
+  {
+    double deltaj=0.0;
+    deltaj = t- m_AbsoluteTimeReference - m_RefTime[j];
+
+    r = m_omegaj[j] * m_omegaj[j] * cosh(m_omegaj[j]*deltaj) * m_V[j] +
+        m_omegaj[j] * m_omegaj[j] * sinh(m_omegaj[j]*deltaj) * m_W[j];
+    r += m_ListOfCOGPolynomials[j]->ComputeSecDerivative(deltaj);
+    ODEBUG("ComputeCOMAcceleration: " << r);
     return true;
   }
 
diff --git a/src/Mathematics/AnalyticalZMPCOGTrajectory.hh b/src/Mathematics/AnalyticalZMPCOGTrajectory.hh
index 0f6c97b6c96e85f5b1db1a1c04cbcbe5307e3903..716ee6e79c8a147e7c7ec13fdbad3b7534f515c5 100644
--- a/src/Mathematics/AnalyticalZMPCOGTrajectory.hh
+++ b/src/Mathematics/AnalyticalZMPCOGTrajectory.hh
@@ -95,6 +95,17 @@ namespace PatternGeneratorJRL
       */
       bool ComputeCOMSpeed(double t,double &r, int i);
 
+      /*! Compute the current acceleration according
+	to time and the index of the interval.
+	To be efficient this method does not have
+	any boundary check.
+	@param t: the time,
+	@param i: the numero of the interval
+	@param r: the result,
+	@return Returns true if the function has been
+	computed, false otherwise.
+      */
+      bool ComputeCOMAcceleration(double t, double &r, int j);
 
       /*! Compute the current value according
 	to time.
diff --git a/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.cpp b/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.cpp
index 25c00c43b56ff75f34c304e122c65a5184db2d2b..087f111c32f74a15c5f31a2f224fdfbb3d799afd 100644
--- a/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.cpp
+++ b/src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.cpp
@@ -645,9 +645,9 @@ namespace PatternGeneratorJRL
 
     m_kajitaDynamicFilter->init(m_CurrentTime,
                                 m_SamplingPeriod,
+                                0.050,
                                 m_SamplingPeriod,
-                                m_SamplingPeriod,
-                                m_PreviewControlTime,
+                                1.6,
                                 lStartingCOMState.z[0]
                                 );
 
@@ -666,71 +666,92 @@ namespace PatternGeneratorJRL
       {
 	if (m_AnalyticalZMPCoGTrajectoryX->GetIntervalIndexFromTime(time,lIndexInterval))
 	  {
-	    
-	    ZMPPosition aZMPPos;
-	    memset(&aZMPPos,0,sizeof(aZMPPos));
-	    COMState aCOMPos;
-	    memset(&aCOMPos,0,sizeof(aCOMPos));
-
-	    if (m_FilteringActivate)
-	      {
-		double FZmpX=0, FComX=0,FComdX=0;
-		
-		// Should we filter ?
-		bool r = m_FilterXaxisByPC->UpdateOneStep(time,FZmpX, FComX, FComdX);
-		if (r)
-		  {
-		    double FZmpY=0, FComY=0,FComdY=0;
-		    // Yes we should.
-		    m_FilterYaxisByPC->UpdateOneStep(time,FZmpY, FComY, FComdY);
-
-		    /*! Feed the ZMPPositions. */
-		    aZMPPos.px = FZmpX;
-		    aZMPPos.py = FZmpY;
-
-		    /*! Feed the COMStates. */
-		    aCOMPos.x[0] = FComX; aCOMPos.x[1] = FComdX;
-		    aCOMPos.y[0] = FComY; aCOMPos.y[1] = FComdY;
-		  }
-	      }
+            // prepare the buffers for the dynamic filter
+	    unsigned N = (unsigned)(m_kajitaDynamicFilter->getPreviewWindowSize_()/
+                                    m_kajitaDynamicFilter->getInterpolationPeriod());
+
+            std::deque<ZMPPosition> ZMPPos_deq (N);
+	    std::deque<COMState> COMPos_deq(N);
+            std::deque<FootAbsolutePosition> LeftFootAbsPos_deq (N);
+            std::deque<FootAbsolutePosition> RightFootAbsPos_deq (N);
+            for (unsigned i = 0 ; i < N ; ++i)
+            {
+              memset(&ZMPPos_deq[i],0,sizeof(ZMPPos_deq[i]));
+              memset(&COMPos_deq[i],0,sizeof(COMPos_deq[i]));
+              memset(&LeftFootAbsPos_deq[i],0,sizeof(LeftFootAbsPos_deq[i]));
+              memset(&RightFootAbsPos_deq[i],0,sizeof(RightFootAbsPos_deq[i]));
+            }
+
+            /*! Feed the buffer for the dynamic filter */
+            double current_time = time ;
+            for (unsigned i = 0 ; i < N ; ++i)
+            {
+              current_time += i*0.050 ;
+
+              if (0/*m_FilteringActivate*/)
+              {
+                double FZmpX=0, FComX=0,FComdX=0;
+
+                // Should we filter ?
+                bool r = m_FilterXaxisByPC->UpdateOneStep(current_time,FZmpX, FComX, FComdX);
+                if (r)
+                {
+                  double FZmpY=0, FComY=0,FComdY=0;
+                  // Yes we should.
+                  m_FilterYaxisByPC->UpdateOneStep(current_time,FZmpY, FComY, FComdY);
+
+                  /*! Feed the ZMPPositions. */
+                  ZMPPos_deq[i].px = FZmpX;
+                  ZMPPos_deq[i].py = FZmpY;
+
+                  /*! Feed the COMStates. */
+                  COMPos_deq[i].x[0] = FComX; COMPos_deq[i].x[1] = FComdX;
+                  COMPos_deq[i].y[0] = FComY; COMPos_deq[i].y[1] = FComdY;
+                }
+              }
+
+              /*! Feed the ZMPPositions. */
+              double lZMPPosx=0.0,lZMPPosy=0.0;
+              m_AnalyticalZMPCoGTrajectoryX->ComputeZMP(current_time,lZMPPosx,lIndexInterval);
+              ZMPPos_deq[i].px = lZMPPosx;
+              m_AnalyticalZMPCoGTrajectoryY->ComputeZMP(current_time,lZMPPosy,lIndexInterval);
+              ZMPPos_deq[i].py = lZMPPosy;
+
+              /*! Feed the COMStates. */
+              double lCOMPosx=0.0, lCOMPosdx=0.0, lCOMPosddx=0.0;
+              double lCOMPosy=0.0, lCOMPosdy=0.0, lCOMPosddy=0.0;
+              m_AnalyticalZMPCoGTrajectoryX->ComputeCOM(current_time,lCOMPosx,lIndexInterval);
+              m_AnalyticalZMPCoGTrajectoryX->ComputeCOMSpeed(current_time,lCOMPosdx,lIndexInterval);
+              m_AnalyticalZMPCoGTrajectoryX->ComputeCOMAcceleration(current_time,lCOMPosddx,lIndexInterval);
+
+              m_AnalyticalZMPCoGTrajectoryY->ComputeCOM(current_time,lCOMPosy,lIndexInterval);
+              m_AnalyticalZMPCoGTrajectoryY->ComputeCOMSpeed(current_time,lCOMPosdy,lIndexInterval);
+              m_AnalyticalZMPCoGTrajectoryY->ComputeCOMAcceleration(current_time,lCOMPosddy,lIndexInterval);
+              COMPos_deq[i].x[0] = lCOMPosx ; COMPos_deq[i].x[1] = lCOMPosdx ; COMPos_deq[i].x[2] = lCOMPosddx ;
+              COMPos_deq[i].y[0] = lCOMPosy ; COMPos_deq[i].y[1] = lCOMPosdy ; COMPos_deq[i].y[2] = lCOMPosddy ;
+              COMPos_deq[i].z[0] = m_InitialPoseCoMHeight;
+
+              /*! Feed the FootPositions. */
+              /*! Left */
+              m_FeetTrajectoryGenerator->ComputeAnAbsoluteFootPosition(1,current_time,LeftFootAbsPos_deq[i],lIndexInterval);
+              m_FeetTrajectoryGenerator->ComputeAnAbsoluteFootPosition(-1,current_time,RightFootAbsPos_deq[i],lIndexInterval);
+            }
 
             std::deque<COMState> deltaCoMTraj_deq (1);
-            //m_kajitaDynamicFilter->filter(,,,,deltaCoMTraj_deq);
-	    
-	    /*! Feed the ZMPPositions. */
-	    double lZMPPosx=0.0,lZMPPosy=0.0;
-	    m_AnalyticalZMPCoGTrajectoryX->ComputeZMP(time,lZMPPosx,lIndexInterval);
-	    aZMPPos.px += lZMPPosx;
-	    m_AnalyticalZMPCoGTrajectoryY->ComputeZMP(time,lZMPPosy,lIndexInterval);
-	    aZMPPos.py += lZMPPosy;
-	    FinalZMPPositions.push_back(aZMPPos);
-	    
-	    /*! Feed the COMStates. */
-	    double lCOMPosx=0.0, lCOMPosdx=0.0;
-	    double lCOMPosy=0.0, lCOMPosdy=0.0;
-	    m_AnalyticalZMPCoGTrajectoryX->ComputeCOM(time,lCOMPosx,lIndexInterval);
-	    m_AnalyticalZMPCoGTrajectoryX->ComputeCOMSpeed(time,lCOMPosdx,lIndexInterval);
-	    m_AnalyticalZMPCoGTrajectoryY->ComputeCOM(time,lCOMPosy,lIndexInterval);
-	    m_AnalyticalZMPCoGTrajectoryY->ComputeCOMSpeed(time,lCOMPosdy,lIndexInterval);
-	    aCOMPos.x[0] += lCOMPosx + deltaCoMTraj_deq[0].x[0] ; aCOMPos.x[1] += lCOMPosdx + deltaCoMTraj_deq[0].x[1];
-	    aCOMPos.y[0] += lCOMPosy + deltaCoMTraj_deq[0].y[0] ; aCOMPos.y[1] += lCOMPosdy + deltaCoMTraj_deq[0].y[1];
-	    aCOMPos.z[0] = m_InitialPoseCoMHeight;
-	    FinalCOMStates.push_back(aCOMPos);
-	    /*! Feed the FootPositions. */
-
-
-	    /*! Left */
-	    FootAbsolutePosition LeftFootAbsPos;
-	    memset(&LeftFootAbsPos,0,sizeof(LeftFootAbsPos));
-	    m_FeetTrajectoryGenerator->ComputeAnAbsoluteFootPosition(1,time,LeftFootAbsPos,lIndexInterval);
-	    FinalLeftFootAbsolutePositions.push_back(LeftFootAbsPos);
-	    
-	    /*! Right */
-	    FootAbsolutePosition RightFootAbsPos;
-	    memset(&RightFootAbsPos,0,sizeof(RightFootAbsPos));
-	    m_FeetTrajectoryGenerator->ComputeAnAbsoluteFootPosition(-1,time,RightFootAbsPos,lIndexInterval);
-	    FinalRightFootAbsolutePositions.push_back(RightFootAbsPos);
-
+            memset(&deltaCoMTraj_deq[0],0,sizeof(deltaCoMTraj_deq[0]));
+            m_kajitaDynamicFilter->filter(COMPos_deq,ZMPPos_deq,LeftFootAbsPos_deq,RightFootAbsPos_deq,deltaCoMTraj_deq);
+            
+
+            COMState aCOMState (COMPos_deq[0]) ;
+            for(unsigned i = 0 ; i < 3 ; ++i)
+            {
+              aCOMState.x[i] += deltaCoMTraj_deq[0].x[i] ;
+              aCOMState.y[i] += deltaCoMTraj_deq[0].y[i] ;
+            }
+            FinalZMPPositions.push_back(ZMPPos_deq[0]);
+            FinalCOMStates.push_back(aCOMState);
+            FinalLeftFootAbsolutePositions.push_back(LeftFootAbsPos_deq[0]);
+            FinalRightFootAbsolutePositions.push_back(RightFootAbsPos_deq[0]);
 	  }
       }
     else 
diff --git a/src/ZMPRefTrajectoryGeneration/DynamicFilter.cpp b/src/ZMPRefTrajectoryGeneration/DynamicFilter.cpp
index 293a5b2559692b1f7b6cb5aafcb4d7d0b64c6487..5f6cfa6b397d59b5d30ab2e0951bcb766bf0abb6 100644
--- a/src/ZMPRefTrajectoryGeneration/DynamicFilter.cpp
+++ b/src/ZMPRefTrajectoryGeneration/DynamicFilter.cpp
@@ -129,17 +129,22 @@ int DynamicFilter::filter(
     deque<COMState> & outputDeltaCOMTraj_deq_
     )
 {
-  InverseKinematics(
-      inputCOMTraj_deq_,
-      inputLeftFootTraj_deq_,
-      inputRightFootTraj_deq_);
+//  InverseKinematics(
+//      inputCOMTraj_deq_,
+//      inputLeftFootTraj_deq_,
+//      inputRightFootTraj_deq_);
 
-  printDebug();
 
-  InverseDynamics(inputZMPTraj_deq_);
+  //InverseDynamics(inputZMPTraj_deq_);
 
-  int error = OptimalControl(outputDeltaCOMTraj_deq_);
+  //int error = OptimalControl(outputDeltaCOMTraj_deq_);
 
+  printBuffers(inputCOMTraj_deq_,
+             inputZMPTraj_deq_,
+             inputLeftFootTraj_deq_,
+             inputRightFootTraj_deq_,
+             outputDeltaCOMTraj_deq_);
+  int error = 0 ;
   return error ;
 }
 
@@ -321,21 +326,25 @@ double DynamicFilter::filterprecision(double adb)
   return lintadb2/1e7;
 }
 
-void DynamicFilter::printDebug()
+void DynamicFilter::printAlongTime(deque<COMState> & inputCOMTraj_deq_,
+                               deque<ZMPPosition> inputZMPTraj_deq_,
+                               deque<FootAbsolutePosition> & inputLeftFootTraj_deq_,
+                               deque<FootAbsolutePosition> & inputRightFootTraj_deq_,
+                               deque<COMState> & outputDeltaCOMTraj_deq_
+                               )
 {  
-  /// \brief Debug Purpose
-  /// --------------------
+  // Debug Purpose
+  // -------------
   ofstream aof;
   string aFileName;
   ostringstream oss(std::ostringstream::ate);
   static int iteration = 0;
-  int iteration100 = (int)iteration/100;
-  int iteration10 = (int)(iteration - iteration100*100)/10;
-  int iteration1 = (int)(iteration - iteration100*100 - iteration10*10 );
+//  int iteration100 = (int)iteration/100;
+//  int iteration10 = (int)(iteration - iteration100*100)/10;
+//  int iteration1 = (int)(iteration - iteration100*100 - iteration10*10 );
 
-  /// \brief Debug Purpose
-  /// --------------------
-  oss.str("TestHerdt2010DynamicArtDF.dat");
+  // --------------------
+  oss.str("DynamicFilterAllVariablesAlongInTime.dat");
   aFileName = oss.str();
   if(iteration == 0)
   {
@@ -348,8 +357,64 @@ void DynamicFilter::printDebug()
   aof.setf(ios::scientific, ios::floatfield);
   for (unsigned int i = 0 ; i < NbI_ ; ++i )
   {
-    aof << filterprecision( 0.0 ) << " "   // 1
-        << filterprecision( 0.0 ) << " " ; // 2
+    aof << filterprecision( iteration*controlPeriod_ + i*interpolationPeriod_ ) << " " // 0
+        << filterprecision( inputCOMTraj_deq_[i].x[0] ) << " "    // 1
+        << filterprecision( inputCOMTraj_deq_[i].x[1] ) << " "    // 2
+        << filterprecision( inputCOMTraj_deq_[i].x[2] ) << " "    // 3
+        << filterprecision( inputCOMTraj_deq_[i].y[0] ) << " "    // 4
+        << filterprecision( inputCOMTraj_deq_[i].y[1] ) << " "    // 5
+        << filterprecision( inputCOMTraj_deq_[i].y[2] ) << " "    // 6
+        << filterprecision( inputCOMTraj_deq_[i].z[0] ) << " "    // 7
+        << filterprecision( inputCOMTraj_deq_[i].z[1] ) << " "    // 8
+        << filterprecision( inputCOMTraj_deq_[i].z[2] ) << " "    // 9
+        << filterprecision( inputCOMTraj_deq_[i].roll[0] ) << " " // 10
+        << filterprecision( inputCOMTraj_deq_[i].roll[1] ) << " " // 11
+        << filterprecision( inputCOMTraj_deq_[i].roll[2] ) << " " // 12
+        << filterprecision( inputCOMTraj_deq_[i].pitch[0] ) << " "// 13
+        << filterprecision( inputCOMTraj_deq_[i].pitch[1] ) << " "// 14
+        << filterprecision( inputCOMTraj_deq_[i].pitch[2] ) << " "// 15
+        << filterprecision( inputCOMTraj_deq_[i].yaw[0] ) << " "  // 16
+        << filterprecision( inputCOMTraj_deq_[i].yaw[1] ) << " "  // 17
+        << filterprecision( inputCOMTraj_deq_[i].yaw[2] ) << " "  // 18
+
+        << filterprecision( inputZMPTraj_deq_[i].px ) << " "      // 19
+        << filterprecision( inputZMPTraj_deq_[i].py ) << " "      // 20
+
+        << filterprecision( ZMPMB_vec_[i][0] ) << " "                  // 21
+        << filterprecision( ZMPMB_vec_[i][1] ) << " "                  // 22
+
+        << filterprecision( inputLeftFootTraj_deq_[i].x ) << " "       // 23
+        << filterprecision( inputLeftFootTraj_deq_[i].y ) << " "       // 24
+        << filterprecision( inputLeftFootTraj_deq_[i].z ) << " "       // 25
+        << filterprecision( inputLeftFootTraj_deq_[i].theta ) << " "   // 26
+        << filterprecision( inputLeftFootTraj_deq_[i].omega ) << " "   // 27
+        << filterprecision( inputLeftFootTraj_deq_[i].dx ) << " "      // 28
+        << filterprecision( inputLeftFootTraj_deq_[i].dy ) << " "      // 29
+        << filterprecision( inputLeftFootTraj_deq_[i].dz ) << " "      // 30
+        << filterprecision( inputLeftFootTraj_deq_[i].dtheta ) << " "  // 31
+        << filterprecision( inputLeftFootTraj_deq_[i].domega ) << " "  // 32
+        << filterprecision( inputLeftFootTraj_deq_[i].ddx ) << " "     // 33
+        << filterprecision( inputLeftFootTraj_deq_[i].ddy ) << " "     // 34
+        << filterprecision( inputLeftFootTraj_deq_[i].ddz ) << " "     // 35
+        << filterprecision( inputLeftFootTraj_deq_[i].ddtheta ) << " " // 36
+        << filterprecision( inputLeftFootTraj_deq_[i].ddomega ) << " " // 37
+
+        << filterprecision( inputRightFootTraj_deq_[i].x ) << " "      // 38
+        << filterprecision( inputRightFootTraj_deq_[i].y ) << " "      // 39
+        << filterprecision( inputRightFootTraj_deq_[i].z ) << " "      // 40
+        << filterprecision( inputRightFootTraj_deq_[i].theta ) << " "  // 41
+        << filterprecision( inputRightFootTraj_deq_[i].omega ) << " "  // 42
+        << filterprecision( inputRightFootTraj_deq_[i].dx ) << " "     // 43
+        << filterprecision( inputRightFootTraj_deq_[i].dy ) << " "     // 44
+        << filterprecision( inputRightFootTraj_deq_[i].dz ) << " "     // 45
+        << filterprecision( inputRightFootTraj_deq_[i].dtheta ) << " " // 46
+        << filterprecision( inputRightFootTraj_deq_[i].domega ) << " " // 47
+        << filterprecision( inputRightFootTraj_deq_[i].ddx ) << " "    // 48
+        << filterprecision( inputRightFootTraj_deq_[i].ddy ) << " "    // 49
+        << filterprecision( inputRightFootTraj_deq_[i].ddz ) << " "    // 50
+        << filterprecision( inputRightFootTraj_deq_[i].ddtheta ) << " "// 51
+        << filterprecision( inputRightFootTraj_deq_[i].ddomega ) << " ";// 52
+
     for(unsigned int j = 0 ; j < configurationTraj_[i].size() ; j++ )
       aof << filterprecision( configurationTraj_[i](j) ) << " " ;
     for(unsigned int j = 0 ; j < velocityTraj_[i].size() ; j++ )
@@ -364,7 +429,6 @@ void DynamicFilter::printDebug()
 
   static double ecartmaxX = 0 ;
   static double ecartmaxY = 0 ;
-
   for (unsigned int i = 0 ; i < deltaZMP_deq_.size() ; i++ )
   {
     if ( abs(deltaZMP_deq_[i].px) > ecartmaxX )
@@ -372,8 +436,110 @@ void DynamicFilter::printDebug()
     if ( abs(deltaZMP_deq_[i].py) > ecartmaxY )
       ecartmaxY = abs(deltaZMP_deq_[i].py) ;
   }
+
   return ;
 }
 
+void DynamicFilter::printBuffers(deque<COMState> & inputCOMTraj_deq_,
+                deque<ZMPPosition> inputZMPTraj_deq_,
+                deque<FootAbsolutePosition> & inputLeftFootTraj_deq_,
+                deque<FootAbsolutePosition> & inputRightFootTraj_deq_,
+                deque<COMState> & outputDeltaCOMTraj_deq_
+                )
+{
+  // Debug Purpose
+  // -------------
+  ofstream aof;
+  string aFileName;
+  ostringstream oss(std::ostringstream::ate);
+  static int iteration = 0;
+  int iteration100 = (int)iteration/100;
+  int iteration10 = (int)(iteration - iteration100*100)/10;
+  int iteration1 = (int)(iteration - iteration100*100 - iteration10*10 );
+
+  // --------------------
+  oss.str("DumpingData/DynamicFilterAllVariablesAlongInTime_");
+  oss << iteration100 << iteration10 << iteration1 << ".dat" ;
+  aFileName = oss.str();
+  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);
+  for (unsigned int i = 0 ; i < inputCOMTraj_deq_.size() ; ++i )
+  {
+    aof << filterprecision( iteration*controlPeriod_ + i*interpolationPeriod_ ) << " " // 0
+        << filterprecision( inputCOMTraj_deq_[i].x[0] ) << " "    // 1
+        << filterprecision( inputCOMTraj_deq_[i].x[1] ) << " "    // 2
+        << filterprecision( inputCOMTraj_deq_[i].x[2] ) << " "    // 3
+        << filterprecision( inputCOMTraj_deq_[i].y[0] ) << " "    // 4
+        << filterprecision( inputCOMTraj_deq_[i].y[1] ) << " "    // 5
+        << filterprecision( inputCOMTraj_deq_[i].y[2] ) << " "    // 6
+        << filterprecision( inputCOMTraj_deq_[i].z[0] ) << " "    // 7
+        << filterprecision( inputCOMTraj_deq_[i].z[1] ) << " "    // 8
+        << filterprecision( inputCOMTraj_deq_[i].z[2] ) << " "    // 9
+        << filterprecision( inputCOMTraj_deq_[i].roll[0] ) << " " // 10
+        << filterprecision( inputCOMTraj_deq_[i].roll[1] ) << " " // 11
+        << filterprecision( inputCOMTraj_deq_[i].roll[2] ) << " " // 12
+        << filterprecision( inputCOMTraj_deq_[i].pitch[0] ) << " "// 13
+        << filterprecision( inputCOMTraj_deq_[i].pitch[1] ) << " "// 14
+        << filterprecision( inputCOMTraj_deq_[i].pitch[2] ) << " "// 15
+        << filterprecision( inputCOMTraj_deq_[i].yaw[0] ) << " "  // 16
+        << filterprecision( inputCOMTraj_deq_[i].yaw[1] ) << " "  // 17
+        << filterprecision( inputCOMTraj_deq_[i].yaw[2] ) << " "  // 18
+
+        << filterprecision( inputZMPTraj_deq_[i].px ) << " "      // 19
+        << filterprecision( inputZMPTraj_deq_[i].py ) << " "      // 20
+
+//        << filterprecision( ZMPMB_vec_[i][0] ) << " "                  // 21
+//        << filterprecision( ZMPMB_vec_[i][1] ) << " "                  // 22
+
+        << filterprecision( inputLeftFootTraj_deq_[i].x ) << " "       // 23
+        << filterprecision( inputLeftFootTraj_deq_[i].y ) << " "       // 24
+        << filterprecision( inputLeftFootTraj_deq_[i].z ) << " "       // 25
+        << filterprecision( inputLeftFootTraj_deq_[i].theta ) << " "   // 26
+        << filterprecision( inputLeftFootTraj_deq_[i].omega ) << " "   // 27
+        << filterprecision( inputLeftFootTraj_deq_[i].dx ) << " "      // 28
+        << filterprecision( inputLeftFootTraj_deq_[i].dy ) << " "      // 29
+        << filterprecision( inputLeftFootTraj_deq_[i].dz ) << " "      // 30
+        << filterprecision( inputLeftFootTraj_deq_[i].dtheta ) << " "  // 31
+        << filterprecision( inputLeftFootTraj_deq_[i].domega ) << " "  // 32
+        << filterprecision( inputLeftFootTraj_deq_[i].ddx ) << " "     // 33
+        << filterprecision( inputLeftFootTraj_deq_[i].ddy ) << " "     // 34
+        << filterprecision( inputLeftFootTraj_deq_[i].ddz ) << " "     // 35
+        << filterprecision( inputLeftFootTraj_deq_[i].ddtheta ) << " " // 36
+        << filterprecision( inputLeftFootTraj_deq_[i].ddomega ) << " " // 37
+
+        << filterprecision( inputRightFootTraj_deq_[i].x ) << " "      // 38
+        << filterprecision( inputRightFootTraj_deq_[i].y ) << " "      // 39
+        << filterprecision( inputRightFootTraj_deq_[i].z ) << " "      // 40
+        << filterprecision( inputRightFootTraj_deq_[i].theta ) << " "  // 41
+        << filterprecision( inputRightFootTraj_deq_[i].omega ) << " "  // 42
+        << filterprecision( inputRightFootTraj_deq_[i].dx ) << " "     // 43
+        << filterprecision( inputRightFootTraj_deq_[i].dy ) << " "     // 44
+        << filterprecision( inputRightFootTraj_deq_[i].dz ) << " "     // 45
+        << filterprecision( inputRightFootTraj_deq_[i].dtheta ) << " " // 46
+        << filterprecision( inputRightFootTraj_deq_[i].domega ) << " " // 47
+        << filterprecision( inputRightFootTraj_deq_[i].ddx ) << " "    // 48
+        << filterprecision( inputRightFootTraj_deq_[i].ddy ) << " "    // 49
+        << filterprecision( inputRightFootTraj_deq_[i].ddz ) << " "    // 50
+        << filterprecision( inputRightFootTraj_deq_[i].ddtheta ) << " "// 51
+        << filterprecision( inputRightFootTraj_deq_[i].ddomega ) << " ";// 52
+
+//    for(unsigned int j = 0 ; j < configurationTraj_[i].size() ; j++ )
+//      aof << filterprecision( configurationTraj_[i](j) ) << " " ;
+//    for(unsigned int j = 0 ; j < velocityTraj_[i].size() ; j++ )
+//      aof << filterprecision( velocityTraj_[i](j) ) << " " ;
+//    for(unsigned int j = 0 ; j < accelerationTraj_[i].size() ; j++ )
+//      aof << filterprecision( accelerationTraj_[i](j) ) << " " ;
 
+    aof << endl ;
+  }
+  aof.close();
+
+
+  ++iteration;
+  return ;
+}
diff --git a/src/ZMPRefTrajectoryGeneration/DynamicFilter.hh b/src/ZMPRefTrajectoryGeneration/DynamicFilter.hh
index 46ca48307a3e79388b178f150bef87852a30da59..0df47c46903f58658fe1a2432c99b8e867f26df6 100644
--- a/src/ZMPRefTrajectoryGeneration/DynamicFilter.hh
+++ b/src/ZMPRefTrajectoryGeneration/DynamicFilter.hh
@@ -62,7 +62,20 @@ namespace PatternGeneratorJRL
     /// --------------------------------------
     int OptimalControl(std::deque<COMState> & outputDeltaCOMTraj_deq_);
 
-    void printDebug();
+    void printAlongTime(deque<COMState> & inputCOMTraj_deq_,
+                    deque<ZMPPosition> inputZMPTraj_deq_,
+                    deque<FootAbsolutePosition> & inputLeftFootTraj_deq_,
+                    deque<FootAbsolutePosition> & inputRightFootTraj_deq_,
+                    deque<COMState> & outputDeltaCOMTraj_deq_
+                    );
+
+    void printBuffers(deque<COMState> & inputCOMTraj_deq_,
+                    deque<ZMPPosition> inputZMPTraj_deq_,
+                    deque<FootAbsolutePosition> & inputLeftFootTraj_deq_,
+                    deque<FootAbsolutePosition> & inputRightFootTraj_deq_,
+                    deque<COMState> & outputDeltaCOMTraj_deq_
+                    );
+
     double filterprecision(double adb);
 
 
@@ -81,10 +94,25 @@ namespace PatternGeneratorJRL
     inline void setPGPeriod(double PG_T)
     {PG_T_ = PG_T ;}
 
+    inline void setPreviewWindowSize_(double previewWindowSize)
+    { previewWindowSize_ = previewWindowSize; }
+
     /// \brief getter :
     inline ComAndFootRealization * getComAndFootRealization()
     { return comAndFootRealization_;};
 
+    inline double getCurrentTime()
+    {return currentTime_ ;}
+
+    inline double getControlPeriod()
+    {return controlPeriod_ ;}
+
+    inline double getInterpolationPeriod()
+    {return interpolationPeriod_ ;}
+
+    inline double getPreviewWindowSize_()
+    {return previewWindowSize_ ;}
+
   private: // Private members
 
     /// \brief Time variables