diff --git a/src/engine.c b/src/engine.c
index bf334f8b5762d468a861ba0141b08e5cdffa1109..1be8b196b802b54345e34a634e70e303a64eb599 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -2335,8 +2335,23 @@ void engine_step(struct engine *e) {
 #endif
 
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
+  /* Check how many gparts are active this timestep. */
+  size_t nr_gparts = e->s->nr_gparts;
+  long long gpart_active_count = 0;
+
+  /* Count active gparts */
+  for (long long i=0; i < nr_gparts; ++i) {
+    struct gpart *gp = &e->s->gparts[i];
+    if (gpart_is_active(gp, e)) gpart_active_count += 1;
+  }
+
+  /* Are all gparts active? */
+  const int all_gparts_active = gpart_active_count == nr_gparts;
+ 
   /* Run the brute-force gravity calculation for some gparts */
-  if (e->policy & engine_policy_self_gravity)
+  if (e->policy & engine_policy_self_gravity &&
+        ((all_gparts_active && e->force_checks_only_all_active) ||
+        !e->force_checks_only_all_active))
     gravity_exact_force_compute(e->s, e);
 #endif
 
@@ -2357,7 +2372,9 @@ void engine_step(struct engine *e) {
 
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
   /* Check the accuracy of the gravity calculation */
-  if (e->policy & engine_policy_self_gravity)
+  if (e->policy & engine_policy_self_gravity &&
+        ((all_gparts_active && e->force_checks_only_all_active) ||
+        !e->force_checks_only_all_active))
     gravity_exact_force_check(e->s, e, 1e-1);
 #endif
 
@@ -3584,6 +3601,11 @@ void engine_init(struct engine *e, struct space *s, struct swift_params *params,
   logger_init(e->logger, params);
 #endif
 
+#ifdef SWIFT_GRAVITY_FORCE_CHECKS
+  e->force_checks_only_all_active =
+    parser_get_opt_param_int(params, "ForceChecks:only_when_all_active", 1);
+#endif
+
   /* Make the space link back to the engine. */
   s->e = e;
 
diff --git a/src/engine.h b/src/engine.h
index 7bf3ae264120e0481b8e71087b22cf9753f756d1..9ecd420850823ac6bc1f9bec429f972d198744a4 100644
--- a/src/engine.h
+++ b/src/engine.h
@@ -484,6 +484,11 @@ struct engine {
 
   /* Has there been an stf this timestep? */
   char stf_this_timestep;
+
+#ifdef SWIFT_GRAVITY_FORCE_CHECKS
+  /* Run brute force checks only on steps when all gparts active? */
+  int force_checks_only_all_active;
+#endif
 };
 
 /* Function prototypes, engine.c. */