diff --git a/wally/suits/io/agent.py b/wally/suits/io/agent.py
index 1982e35..c012950 100644
--- a/wally/suits/io/agent.py
+++ b/wally/suits/io/agent.py
@@ -249,8 +249,8 @@
     except KeyError:
         pass
 
-    is_sync = config.get("sync", "0") == "1"
-    is_direct = config.get("direct", "0") == "1"
+    is_sync = str(config.get("sync", "0")) == "1"
+    is_direct = str(config.get("direct", "0")) == "1"
 
     if is_sync and is_direct:
         return 'x'
@@ -270,9 +270,9 @@
 
     sync_mode = get_test_sync_mode(params)
     th_count = params.get('numjobs')
+
     if th_count is None:
-        th_count = params.get('concurence', '1')
-    th_count = int(th_count)
+        th_count = params.get('concurence', 1)
 
     return "{0}{1}{2}th{3}".format(rw,
                                    sync_mode,
diff --git a/wally/suits/itest.py b/wally/suits/itest.py
index 0062569..0b8a131 100644
--- a/wally/suits/itest.py
+++ b/wally/suits/itest.py
@@ -2,6 +2,7 @@
 import time
 import os.path
 import logging
+import datetime
 
 from wally.ssh_utils import copy_paths, run_over_ssh, delete_file
 from wally.utils import ssize_to_b, open_for_append_or_create, sec_to_str
@@ -195,8 +196,16 @@
         try:
             timeout = int(exec_time * 1.2 + 300)
             if barrier.wait():
-                templ = "Test should takes about {0}. Will wait at most {1}"
-                logger.info(templ.format(exec_time_str, sec_to_str(timeout)))
+                templ = "Test should takes about {0}." + \
+                        " Should finish at {1}," + \
+                        " will wait at most till {2}"
+                now_dt = datetime.datetime.now()
+                end_dt = now_dt + datetime.timedelta(0, exec_time)
+                wait_till = now_dt + datetime.timedelta(0, timeout)
+
+                logger.info(templ.format(exec_time_str,
+                                         end_dt.strftime("%H:%M:%S"),
+                                         wait_till.strftime("%H:%M:%S")))
 
             out_err = run_over_ssh(conn, cmd,
                                    stdin_data=self.raw_cfg,
