diff --git a/src/solvers/pde/tnlExplicitTimeStepper.h b/src/solvers/pde/tnlExplicitTimeStepper.h
index 3394733c765b59eb88328f75b49e7a196819d87f..0f35a1495d9c89687542d4d6ede27e7beb4369e4 100644
--- a/src/solvers/pde/tnlExplicitTimeStepper.h
+++ b/src/solvers/pde/tnlExplicitTimeStepper.h
@@ -86,6 +86,8 @@ class tnlExplicitTimeStepper
    MeshDependentDataType* meshDependentData;
    
    tnlTimerRT explicitUpdaterTimer, mainTimer;
+   
+   long long int allIterations;
 };
 
 #include <solvers/pde/tnlExplicitTimeStepper_impl.h>
diff --git a/src/solvers/pde/tnlExplicitTimeStepper_impl.h b/src/solvers/pde/tnlExplicitTimeStepper_impl.h
index f071b3af0acf7b2ba7c543bfda8362743f6ed773..e026ef174f85a1d4be7181fd7f6d45af3502463f 100644
--- a/src/solvers/pde/tnlExplicitTimeStepper_impl.h
+++ b/src/solvers/pde/tnlExplicitTimeStepper_impl.h
@@ -27,7 +27,8 @@ tnlExplicitTimeStepper< Problem, OdeSolver >::
 tnlExplicitTimeStepper()
 : odeSolver( 0 ),
   problem( 0 ),
-  timeStep( 0 )
+  timeStep( 0 ),
+  allIterations( 0 )
 {
 };
 
@@ -123,8 +124,11 @@ solve( const RealType& time,
       this->odeSolver->setMaxTau( ( stopTime - time ) / ( typename OdeSolver< Problem >::RealType ) this->odeSolver->getMinIterations() );
    this->mesh = &mesh;
    this->meshDependentData = &meshDependentData;
-   return this->odeSolver->solve( dofVector );
+   if( ! this->odeSolver->solve( dofVector ) )
+      return false;
    mainTimer.stop();
+   this->allIterations += this->odeSolver->getIterations();
+   return true;
 }
 
 template< typename Problem,
@@ -167,6 +171,7 @@ bool
 tnlExplicitTimeStepper< Problem, OdeSolver >::
 writeEpilog( tnlLogger& logger )
 {
+   logger.writeParameter< long long int >( "Ierations count:", this->allIterations );
    logger.writeParameter< double >( "Explicit update computation time:", this->explicitUpdaterTimer.getTime() );
    logger.writeParameter< double >( "Explicit time stepper time:", this->mainTimer.getTime() );
    return true;
diff --git a/src/solvers/pde/tnlSemiImplicitTimeStepper.h b/src/solvers/pde/tnlSemiImplicitTimeStepper.h
index 05f16704e760f44ab54d433211a56ddaa5a29623..1d66681f2956dfcf70c1e1957457a1e98f920679 100644
--- a/src/solvers/pde/tnlSemiImplicitTimeStepper.h
+++ b/src/solvers/pde/tnlSemiImplicitTimeStepper.h
@@ -83,6 +83,8 @@ class tnlSemiImplicitTimeStepper
    tnlTimerRT preIterateTimer, linearSystemAssemblerTimer, linearSystemSolverTimer, postIterateTimer;
    
    bool verbose;
+   
+   long long int allIterations;
 };
 
 #include <solvers/pde/tnlSemiImplicitTimeStepper_impl.h>
diff --git a/src/solvers/pde/tnlSemiImplicitTimeStepper_impl.h b/src/solvers/pde/tnlSemiImplicitTimeStepper_impl.h
index 4a873b67d3ae7f5eea6aceb7571e009b17de3fc7..53507c0f73bc74844172a4173f92f8ad1eb8e051 100644
--- a/src/solvers/pde/tnlSemiImplicitTimeStepper_impl.h
+++ b/src/solvers/pde/tnlSemiImplicitTimeStepper_impl.h
@@ -20,13 +20,16 @@
 
 #include <core/mfuncs.h>
 
+#include "tnlSemiImplicitTimeStepper.h"
+
 template< typename Problem,
           typename LinearSystemSolver >
 tnlSemiImplicitTimeStepper< Problem, LinearSystemSolver >::
 tnlSemiImplicitTimeStepper()
 : problem( 0 ),
   linearSystemSolver( 0 ),
-  timeStep( 0 )
+  timeStep( 0 ),
+  allIterations( 0 )
 {
 };
 
@@ -75,6 +78,7 @@ init( const MeshType& mesh )
       return false;
    this->linearSystemAssemblerTimer.reset();
    this->linearSystemSolverTimer.reset();
+   this->allIterations = 0;
    return true;
 }
 
@@ -187,6 +191,7 @@ solve( const RealType& time,
          return false;
       }
       this->linearSystemSolverTimer.stop();
+      this->allIterations += this->linearSystemSolver->getIterations();
 
       //if( verbose )
       //   cout << endl;
@@ -214,10 +219,11 @@ bool
 tnlSemiImplicitTimeStepper< Problem, LinearSystemSolver >::
 writeEpilog( tnlLogger& logger )
 {
+   logger.writeParameter< long long int >( "Ierations count:", this->allIterations );
    logger.writeParameter< double >( "Pre-iterate time:", this->preIterateTimer.getTime() );
    logger.writeParameter< double >( "Linear system assembler time:", this->linearSystemAssemblerTimer.getTime() );
    logger.writeParameter< double >( "Linear system solver time:", this->linearSystemSolverTimer.getTime() );
-   logger.writeParameter< double >( "Post-iterate time:", this->postIterateTimer.getTime() );
+   logger.writeParameter< double >( "Post-iterate time:", this->postIterateTimer.getTime() );   
    return true;
 }