diff --git a/wally/sensors/main.py b/wally/sensors/main.py
index e8489d5..55a9584 100644
--- a/wally/sensors/main.py
+++ b/wally/sensors/main.py
@@ -29,7 +29,7 @@
         else:
             msg = "Sensor {0!r} isn't available".format(sensor_name)
             raise ValueError(msg)
-    return time.time(), result
+    return result
 
 
 def parse_args(args):
@@ -54,10 +54,25 @@
 
     sender = create_protocol(opts.url)
     prev = {}
+    next_data_record_time = time.time()
 
     while True:
-        gtime, data = get_values(required_sensors.items())
-        curr = {'time': SensorInfo(gtime, True)}
+        real_time = int(time.time())
+
+        if real_time < int(next_data_record_time):
+            if int(next_data_record_time) - real_time > 2:
+                print "Error: sleep too small portion!!"
+            report_time = int(next_data_record_time)
+        elif real_time > int(next_data_record_time):
+            if real_time - int(next_data_record_time) > 2:
+                report_time = real_time
+            else:
+                report_time = int(next_data_record_time)
+        else:
+            report_time = real_time
+
+        data = get_values(required_sensors.items())
+        curr = {'time': SensorInfo(report_time, True)}
         for name, val in data.items():
             if val.is_accumulated:
                 if name in prev:
@@ -69,9 +84,11 @@
         if source_id is not None:
             curr['source_id'] = source_id
 
+        print report_time, int((report_time - time.time()) * 10) * 0.1
         sender.send(curr)
 
-        time.sleep(opts.timeout)
+        next_data_record_time = report_time + opts.timeout + 0.5
+        time.sleep(next_data_record_time - time.time())
 
 
 def pid_running(pid):
@@ -103,11 +120,13 @@
                 if pid_running(pid):
                     os.kill(pid, signal.SIGTERM)
 
-                time.sleep(0.1)
+                time.sleep(0.5)
 
                 if pid_running(pid):
                     os.kill(pid, signal.SIGKILL)
 
+                time.sleep(0.5)
+
                 if os.path.isfile(pid_file):
                     os.unlink(pid_file)
         elif opts.daemon == 'status':
