diff --git a/osync.sh b/osync.sh
index 6ba5cf0..632e487 100755
--- a/osync.sh
+++ b/osync.sh
@@ -1993,11 +1993,21 @@ function SyncOnChanges
 		fi
 
 		Log "#### Monitoring now."
-        	inotifywait --exclude $OSYNC_DIR $RSYNC_EXCLUDE -qq -r -e create -e modify -e delete -e move -e attrib "$MASTER_SYNC_DIR" &
+		inotifywait --exclude $OSYNC_DIR $RSYNC_EXCLUDE -qq -r -e create -e modify -e delete -e move -e attrib --timeout "$MAX_WAIT" "$MASTER_SYNC_DIR" &
 		sub_pid=$!
 		wait $sub_pid
-		Log "#### Changes detected, waiting $MIN_WAIT seconds before running next sync."
-		sleep $MIN_WAIT
+		retval=$?
+		if [ $retval == 0 ]
+		then
+			Log "#### Changes detected, waiting $MIN_WAIT seconds before running next sync."
+			sleep $MIN_WAIT
+		elif [ $retval == 2 ]
+		then
+			Log "#### $MAX_WAIT timeout reached, running sync."
+		else
+			Log "#### inotify error detected, waiting $MIN_WAIT seconds before running next sync."
+			sleep $MIN_WAIT
+		fi
 	done
 
 }
diff --git a/sync.conf b/sync.conf
index bc8bef2..c1e12ad 100755
--- a/sync.conf
+++ b/sync.conf
@@ -87,6 +87,10 @@ HARD_MAX_EXEC_TIME=10600
 ## Minimum time (in seconds) in file monitor /daemon mode between modification detection and sync task in order to let copy operations finish.
 MIN_WAIT=60
 
+## Maximum time (in seconds) waiting in file monitor / daemon mode. After this time, sync is run.
+## Use 0 to wait indefinitely.
+MAX_WAIT=300
+
 ## ---------- BACKUP AND DELETION OPTIONS
 
 ## Enabling this option will keep a backup of a file on the target replica if it gets updated from the source replica. Backups will be made to .osync_workdir/backups