diff --git a/bin/sleep-until b/bin/sleep-until
index 8f03d0b..1dcdff6 100755
--- a/bin/sleep-until
+++ b/bin/sleep-until
@@ -1,6 +1,8 @@
 #!/bin/bash
 set -euo pipefail
 
+default_sleep=10
+
 source ${HOME}/bin/script_framework.sh
 
 time=${1:-}
@@ -9,5 +11,10 @@ time=${1:-}
 tdiff=$(($(date -d "$1" +%s) - $(date +%s)))
 [ $tdiff -gt 0 ] || tdiff=$((tdiff + 86400))
 
+ttime=$(date -d "now + ${tdiff} seconds" +%s)
+
 step "Sleeping ${tdiff}s until $(date -d "now + ${tdiff} seconds" "+%Y-%m-%d %H:%M:%S")..."
-sleep ${tdiff}
+while [ $(date +%s) -lt $ttime ]; do
+  tremain=$(( ttime - $(date +%s) ))
+  [ $tremain -gt $default_sleep ] && sleep $default_sleep || sleep $tremain
+done