Index: icinga2-2.4.10/lib/icinga/checkable-check.cpp
===================================================================
--- icinga2-2.4.10.orig/lib/icinga/checkable-check.cpp
+++ icinga2-2.4.10/lib/icinga/checkable-check.cpp
@@ -79,6 +79,8 @@ void Checkable::UpdateNextCheck(const Me
 	if (interval > 1)
 		adj = fmod(now * 100 + GetSchedulingOffset(), interval * 100) / 100.0;
 
+	adj = std::min(0.5 + fmod(GetSchedulingOffset(), interval * 5) / 100.0, adj);
+
 	SetNextCheck(now - adj + interval, false, origin);
 }
 
@@ -326,11 +328,7 @@ void Checkable::ProcessCheckResult(const
 	is_flapping = IsFlapping();
 
 	if (cr->GetActive()) {
-		/* If there was a OK -> NOT-OK state change for actively scheduled checks,
-		 * update the next check time using the retry_interval.
-		 * Important: Add the cluster message origin. */
-		if (GetStateType() == StateTypeSoft)
-			UpdateNextCheck(origin);
+		UpdateNextCheck(origin);
 	} else {
 		/* Reschedule the next check for passive check results. The side effect of
 		 * this is that for as long as we receive passive results for a service we
