diff --git a/ChangeLog b/ChangeLog
index 83402884186e3e8624a95004392f79efae4a8908..95b6326a5d54d5f056fdc183d3d17cafe3507dc0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2007-08-07  Per Cederqvist  <ceder@ryttargardskyrkan.se>
 
+	Added support for starting the backups at a predefined time.
+	* backup-repeatedly: New option: --start-time, that specifies the
+	hour and minute when the backup should start.
+
 	Added fetch-work-pcfritz.
 	* fetch-work-pcfritz: New file, for the installation at
 	Ryttargårdskyrkan.
diff --git a/backup-repeatedly b/backup-repeatedly
index 2f2bb1f0c3cc6c5ab83c8b2654d119cc06abbc1d..0d6d7aff413bd3925fbe69f94491e1cb1645d861 100755
--- a/backup-repeatedly
+++ b/backup-repeatedly
@@ -1,7 +1,53 @@
 #!/bin/sh
 ctr=0
+starttime=
+
+LASTSTART=/opt/LYSrdiff/var/last-start
+
+case $1 in
+    --start-time)
+        shift
+	case $1 in
+	    [0-9][0-9]:[0-9][0-9])
+                start_h=`echo $1|sed 's/:.*//'`
+		start_m=`echo $1|sed 's/.*://'`
+		starttime=`expr 3600 '*' $start_h + 60 '*' $start_m`
+		shift
+		;;
+	    *)
+	        echo bad time >&2
+		exit 1
+		;;
+	esac
+esac
+	    
 while :
 do
+  if [ -n "$starttime" ]
+  then
+      if [ -z "`find $LASTSTART -ctime +0 -print 2>/dev/null`" ]
+      then
+	  now=`date +%H:%M:%S`
+	  h=`echo $now|sed 's/:.*//'`
+	  m=`echo $now|sed 's/[^:]*://'|sed 's/:.*//'`
+	  s=`echo $now|sed 's/.*://'`
+	  delta=`expr $starttime - '(' 3600 '*' $h + 60 '*' $m + $s ')'`
+	  day=`expr 24 '*' 3600`
+	  to_wait=`expr '(' $delta + $day ')' % $day`
+	  if [ $to_wait -lt `expr $day - 60` ] && [ $to_wait -gt 1 ]
+	  then
+	      echo Sleeping for $to_wait seconds until $start_h:$start_m
+	      sleep $to_wait
+	  else
+	      echo Not sleeping $to_wait seconds
+	  fi
+      else
+	  echo Not sleeping since previous run took too long
+      fi
+  else
+      echo 'Not sleeping: no --start-time specified'
+  fi
+
   ctr=`expr $ctr + 1`
   [ -f /opt/LYSrdiff/etc/finish ] && break
   [ -f /opt/LYSrdiff/etc/stop ] && break