diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
index cc399d120ecf709b7639854abeb377803b954b00..8e1d601df6e0f3f4b8c77e8b3c612108bf9d7bb0 100644
--- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c
+++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
@@ -1141,26 +1141,28 @@ static bool s_session_round_new(void *a_arg)
 
     if (!a_session->cur_round.sync_sent) {
         uint16_t l_sync_send_delay = 0;
-        
-        if (!l_round_already_started && a_session->sync_failed) {
-            l_sync_send_delay = s_get_round_skip_timeout(a_session);
-        } else if (!l_round_already_started) {
-            log_it(L_DEBUG, "New round delay = %u", PVT(a_session->esbocs)->new_round_delay);
-
-            long long l_time_delta = a_session->esbocs->last_accepted_block_timestamp - a_session->cur_round.round_start_ts;
-            log_it(L_DEBUG, "Round continue from last accepted block delta = %lld, last_block = %lld, round_start= %lld",
-                l_time_delta, a_session->esbocs->last_accepted_block_timestamp, a_session->cur_round.round_start_ts);
-
-            if (l_time_delta >= 0 && l_time_delta < PVT(a_session->esbocs)->new_round_delay) {
-                l_sync_send_delay = PVT(a_session->esbocs)->new_round_delay - (uint16_t)l_time_delta;
-            } else if (l_time_delta < 0 && l_time_delta > -PVT(a_session->esbocs)->new_round_delay) {
-                l_time_delta = dap_time_now() - a_session->cur_round.round_start_ts;
-                log_it(L_DEBUG, "Round continue for %lld, round_start = %lld, time_now = %lld",
-                    l_time_delta, a_session->cur_round.round_start_ts, dap_time_now());
-
-                if (l_time_delta < PVT(a_session->esbocs)->new_round_delay) {
-                    int64_t delay = PVT(a_session->esbocs)->new_round_delay - l_time_delta;
-                    l_sync_send_delay = delay >= 0 ? (uint16_t)delay : (uint16_t)(-delay);
+        uint32_t l_new_round_delay = PVT(a_session->esbocs)->new_round_delay;
+        long long last_block_ts = a_session->esbocs->last_accepted_block_timestamp;
+        long long l_round_start_ts = a_session->cur_round.round_start_ts;
+        long long l_time_delta = last_block_ts - l_round_start_ts;
+
+        if (!l_round_already_started) {
+            if (a_session->sync_failed) {
+                l_sync_send_delay = s_get_round_skip_timeout(a_session);
+            } else {
+                log_it(L_DEBUG, "New round delay = %u", l_new_round_delay);
+                log_it(L_DEBUG, "Round continue from last accepted block delta = %lld, last_block = %lld, round_start = %lld",
+                    l_time_delta, last_block_ts, l_round_start_ts);
+                if (l_time_delta >= 0 && l_time_delta < l_new_round_delay) {
+                    l_sync_send_delay = l_new_round_delay - l_time_delta;
+                } else if (l_time_delta < 0 && l_time_delta > -l_new_round_delay) {
+                    l_time_delta = dap_time_now() - l_round_start_ts;
+                    log_it(L_DEBUG, "Round continue for %lld, round_start = %lld, time_now = %lld",
+                        l_time_delta, l_round_start_ts, dap_time_now());
+
+                    if (l_time_delta < l_new_round_delay) {
+                        l_sync_send_delay = l_new_round_delay - abs(l_time_delta);
+                    }
                 }
             }
         }