diff --git a/src/problem/problem.cpp b/src/problem/problem.cpp
index 747737dc1ff0ea4b742a97017065d229889ea7d6..6326970fc3b4db3a5b825590c27367787ff457e2 100644
--- a/src/problem/problem.cpp
+++ b/src/problem/problem.cpp
@@ -1052,14 +1052,22 @@ void Problem::print(int _depth, std::ostream& _stream, bool _constr_by, bool _me
                     _stream << "Fac" << cby->id() << " \t";
             }
             _stream << std::endl;
-            if (_metric)
+            
+            if (_metric && _state_blocks){
+                for (const auto& key : F->getStructure())
+                {
+                    auto sb = F->getStateBlock(key);
+                    _stream << "    " << key << "," << (sb->isFixed() ? "Fix: " : "Est: ") << sb->getState().transpose() << std::endl;
+                }
+            }
+            else if (_metric)
             {
                 _stream << (F->isFixed() ? "    Fix" : "    Est") << ", ts=" << std::setprecision(5)
                         << F->getTimeStamp();
                 _stream << ",\t x = ( " << std::setprecision(2) << F->getState().transpose() << " )";
                 _stream << std::endl;
             }
-            if (_state_blocks)
+            else if (_state_blocks)
             {
                 _stream << "    sb:";
                 for (const auto& sb : F->getStateBlockVec())
@@ -1068,6 +1076,7 @@ void Problem::print(int _depth, std::ostream& _stream, bool _constr_by, bool _me
                 }
                 _stream << std::endl;
             }
+
             if (_depth >= 2)
             {
                 // Captures =======================================================================================