diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c
index 6c0c900d670d6d50a25343699c8a2366ab2c362d..74219529241fa8c39a8931a7e4b8408e86ee444e 100644
--- a/modules/type/dag/dap_chain_cs_dag.c
+++ b/modules/type/dag/dap_chain_cs_dag.c
@@ -262,7 +262,7 @@ static int s_chain_callback_atom_add(dap_chain_t * a_chain, dap_chain_atom_ptr_t
 
     // verification was already in s_chain_callback_atom_verify()
     int ret_cs = l_dag->callback_cs_verify(l_dag,l_event);
-    if ( ret != 0 ){
+    if ( ret_cs != 0 ){
         log_it(L_WARNING,"Consensus can't accept the event, verification returned %d",ret_cs);
         return  -2;
     }
@@ -359,7 +359,7 @@ static int s_chain_callback_atom_add(dap_chain_t * a_chain, dap_chain_atom_ptr_t
         return -1;
     }
     // Now check the treshold if some events now are ready to move to the main table
-    dap_chain_cs_dag_proc_treshold(l_dag);
+    while(dap_chain_cs_dag_proc_treshold(l_dag));
     return 0;
 }
 
@@ -692,9 +692,11 @@ int dap_chain_cs_dag_event_verify_hashes_with_treshold(dap_chain_cs_dag_t * a_da
 /**
  * @brief dap_chain_cs_dag_proc_treshold
  * @param a_dag
+ * @returns true if some atoms were moved from threshold to events
  */
-void dap_chain_cs_dag_proc_treshold(dap_chain_cs_dag_t * a_dag)
+bool dap_chain_cs_dag_proc_treshold(dap_chain_cs_dag_t * a_dag)
 {
+    bool res = false;
     // TODO Process finish treshold. For now - easiest from possible
     pthread_rwlock_wrlock(&PVT(a_dag)->events_rwlock);
     dap_chain_cs_dag_event_item_t * l_event_item = NULL, * l_event_item_tmp = NULL;
@@ -706,15 +708,17 @@ void dap_chain_cs_dag_proc_treshold(dap_chain_cs_dag_t * a_dag)
             pthread_rwlock_wrlock(&PVT(a_dag)->events_rwlock);
             HASH_DEL(PVT(a_dag)->events_treshold,l_event_item);
 
-            if(ret == DAP_THRESHOLD_OK)
-              HASH_ADD(hh, PVT(a_dag)->events, hash,sizeof (l_event_item->hash),  l_event_item);
-            else if(ret == DAP_THRESHOLD_CONFLICTING)
-              HASH_ADD(hh, PVT(a_dag)->events_treshold_conflicted, hash,sizeof (l_event_item->hash),  l_event_item);
+            if(ret == DAP_THRESHOLD_OK){
+                HASH_ADD(hh, PVT(a_dag)->events, hash,sizeof (l_event_item->hash),  l_event_item);
+                res = true;
+            }else if(ret == DAP_THRESHOLD_CONFLICTING)
+                HASH_ADD(hh, PVT(a_dag)->events_treshold_conflicted, hash,sizeof (l_event_item->hash),  l_event_item);
 
             s_dag_events_lasts_delete_linked_with_event(a_dag, l_event);
         }
     }
     pthread_rwlock_unlock(&PVT(a_dag)->events_rwlock);
+    return res;
 }
 
 
diff --git a/modules/type/dag/include/dap_chain_cs_dag.h b/modules/type/dag/include/dap_chain_cs_dag.h
index 0621df69b9f6dadf0a89fd07c08682b83729a39a..75a34d230beefb0ecc881e28a8b79b98ccc795c3 100644
--- a/modules/type/dag/include/dap_chain_cs_dag.h
+++ b/modules/type/dag/include/dap_chain_cs_dag.h
@@ -65,7 +65,7 @@ void dap_chain_cs_dag_deinit(void);
 int dap_chain_cs_dag_new(dap_chain_t * a_chain, dap_config_t * a_chain_cfg);
 void dap_chain_cs_dag_delete(dap_chain_t * a_chain);
 
-void dap_chain_cs_dag_proc_treshold(dap_chain_cs_dag_t * a_dag);
+bool dap_chain_cs_dag_proc_treshold(dap_chain_cs_dag_t * a_dag);
 void dap_chain_cs_dag_proc_event_round_new(dap_chain_cs_dag_t *a_dag);
 
 dap_chain_cs_dag_event_t* dap_chain_cs_dag_find_event_by_hash(dap_chain_cs_dag_t * a_dag,