diff --git a/runtime/src/katracereader.cpp b/runtime/src/katracereader.cpp
index 35869aabf6f162da1890102f4d97048bb7562b72..7277c87caadbcc42f0ff19e978fde4f05201f1eb 100644
--- a/runtime/src/katracereader.cpp
+++ b/runtime/src/katracereader.cpp
@@ -2264,7 +2264,7 @@ static void callback_csv_event(
           threadstate_t threadstate(threadstate_t::STATE);
           threadstate.kid   = kid;
           threadstate.start = event->date;
-          threadstate.value = 0;
+          threadstate.value = value;
           threadstate.cpu = KAAPI_EVENT_DATA(event,1,i32)[0];
           threadstate.node = KAAPI_EVENT_DATA(event,1,i32)[1];
           threadstates.push_back( threadstate );
diff --git a/runtime/src/kmp_tasking.c b/runtime/src/kmp_tasking.c
index 0eca1ad7f67e20bca21b04c013183966274a82fd..78810c6d0d5391592853ece1547f9c2727e73b07 100644
--- a/runtime/src/kmp_tasking.c
+++ b/runtime/src/kmp_tasking.c
@@ -2508,7 +2508,8 @@ static inline int __kmp_execute_tasks_template(kmp_info_t *thread, kmp_int32 gti
             use_own_tasks = 1;
         else
 #endif
-#if defined(LIBOMP_USE_THEQUEUE)
+          
+#if defined(LIBOMP_USE_THEQUEUE)
         //TG: avoid to return if flag condition is not check - WARN: threads are higly active
         if (flag != NULL && flag->done_check())
 #else
diff --git a/runtime/src/kmp_wait_release.h b/runtime/src/kmp_wait_release.h
index 720ba18f11a728d07811f1fa6436f0efcf8bcc3f..ba2ab59b6ea4c6b5a07661bebf4f6af657deb661 100644
--- a/runtime/src/kmp_wait_release.h
+++ b/runtime/src/kmp_wait_release.h
@@ -252,8 +252,36 @@ __kmp_wait_template(kmp_info_t *this_thr, C *flag, int final_spin
             continue;
 
         KF_TRACE(50, ("__kmp_wait_sleep: T#%d suspend time reached\n", th_gtid));
-
+#if OMPT_SUPPORT
+      enum { SUSPEND_STATE=13 };
+      if (ompt_enabled &&
+          ompt_callbacks.ompt_callback(ompt_event_thread_state_begin)) {
+#if defined(__linux__)
+        kmp_int32 cpu = sched_getcpu();
+#else
+        kmp_int32 cpu =th_gtid;
+#endif
+        kmp_int32 node  = __kmp_cpu2node(cpu);
+          ompt_callbacks.ompt_callback(ompt_event_thread_state_begin)(
+             GTID_TO_OMPT_THREAD_ID(th_gtid), (uint64_t)SUSPEND_STATE, cpu, node );
+      }
+#endif
+      
         flag->suspend(th_gtid);
+      
+#if OMPT_SUPPORT
+      if (ompt_enabled &&
+          ompt_callbacks.ompt_callback(ompt_event_thread_state_end)) {
+#if defined(__linux__)
+        kmp_int32 cpu = sched_getcpu();
+#else
+        kmp_int32 cpu =th_gtid;
+#endif
+        kmp_int32 node  = __kmp_cpu2node(cpu);
+        ompt_callbacks.ompt_callback(ompt_event_thread_state_end)(
+           GTID_TO_OMPT_THREAD_ID(th_gtid), (uint64_t)SUSPEND_STATE, cpu, node);
+      }
+#endif
 
         if (TCR_4(__kmp_global.g.g_done)) {
             if (__kmp_global.g.g_abort)