diff --git a/src/gravity.c b/src/gravity.c
index 7e9c4d02f04bdbf20f12979bec6759c2ef44c6b3..d70617e96a0ab1a039a9d56643c68b49668382cb 100644
--- a/src/gravity.c
+++ b/src/gravity.c
@@ -717,7 +717,7 @@ void gravity_exact_force_check(struct space *s, const struct engine *e,
               gpi->a_grav_m2p[0], gpi->a_grav_m2p[1], gpi->a_grav_m2p[2],
               gpi->a_grav_m2l[0], gpi->a_grav_m2l[1], gpi->a_grav_m2l[2],
               gpi->num_interacted_p2p, gpi->num_interacted_m2p,
-              gpi->num_interacted_m2l, gpi->num_not_interacted);
+              gpi->num_interacted_m2l, gpi->num_interacted_pm);
     }
   }
 
diff --git a/src/gravity/Default/gravity.h b/src/gravity/Default/gravity.h
index 7830a9e064d8a8550d03fee932337dac01ed21ca..ca91265c54262badcb3ebde5b32bd7270be1080a 100644
--- a/src/gravity/Default/gravity.h
+++ b/src/gravity/Default/gravity.h
@@ -165,14 +165,11 @@ __attribute__((always_inline)) INLINE static void gravity_init_gpart(
   gp->num_interacted_m2p = 0;
   gp->num_interacted_m2l = 0;
   gp->num_interacted_p2p = 0;
-  gp->num_not_interacted = 0;
-#endif
-
-#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS)
-  gp->num_interacted = 0;
+  gp->num_interacted_pm = 0;
 #endif
 
 #ifdef SWIFT_DEBUG_CHECKS
+  gp->num_interacted = 0;
   gp->initialised = 1;
 #endif
 }
diff --git a/src/gravity/Default/gravity_part.h b/src/gravity/Default/gravity_part.h
index 79459d0330f50f757738a4a4b0ce6990bcae6972..a533d966b6ed75f5b8866e6e8eb7a72fbbe5ef2c 100644
--- a/src/gravity/Default/gravity_part.h
+++ b/src/gravity/Default/gravity_part.h
@@ -67,9 +67,6 @@ struct gpart {
   /* Has this particle been initialised? */
   int initialised;
 
-#endif
-
-#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS)
   /* Total number of gparts this gpart interacted with */
   long long num_interacted;
 #endif
@@ -99,7 +96,7 @@ struct gpart {
   long long num_interacted_m2p;
   long long num_interacted_m2l;
   long long num_interacted_p2p;
-  long long num_not_interacted;
+  long long num_interacted_pm;
 #endif
 
 } SWIFT_STRUCT_ALIGN;
diff --git a/src/gravity/MultiSoftening/gravity.h b/src/gravity/MultiSoftening/gravity.h
index 178f820a738d02533075914b3c3bc1121998c719..07ed0e78b164e5ee3f01b8c9a62b940201b31aa4 100644
--- a/src/gravity/MultiSoftening/gravity.h
+++ b/src/gravity/MultiSoftening/gravity.h
@@ -175,14 +175,11 @@ __attribute__((always_inline)) INLINE static void gravity_init_gpart(
   gp->num_interacted_m2p = 0;
   gp->num_interacted_m2l = 0;
   gp->num_interacted_p2p = 0;
-  gp->num_not_interacted = 0;
-#endif
-
-#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS)
-  gp->num_interacted = 0;
+  gp->num_interacted_pm = 0;
 #endif
 
 #ifdef SWIFT_DEBUG_CHECKS
+  gp->num_interacted = 0;
   gp->initialised = 1;
 #endif
 }
diff --git a/src/gravity/MultiSoftening/gravity_part.h b/src/gravity/MultiSoftening/gravity_part.h
index fcc212bbee9d30b1c1fe5c32f9a5311cc0f7ec92..2d6d0d9bfbb18040faa282b63a0aa573b751a182 100644
--- a/src/gravity/MultiSoftening/gravity_part.h
+++ b/src/gravity/MultiSoftening/gravity_part.h
@@ -68,9 +68,6 @@ struct gpart {
   /* Has this particle been initialised? */
   int initialised;
 
-#endif
-
-#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS)
   /* Total number of gparts this gpart interacted with */
   long long num_interacted;
 #endif
@@ -100,7 +97,7 @@ struct gpart {
   long long num_interacted_m2l;
   long long num_interacted_m2p;
   long long num_interacted_p2p;
-  long long num_not_interacted;
+  long long num_interacted_pm;
 #endif
 
 } SWIFT_STRUCT_ALIGN;
diff --git a/src/multipole.h b/src/multipole.h
index f2c1d535e04661587010187f9f77fd65b333310c..48c09e0c65cdc380362f491b433595d7e246b9db 100644
--- a/src/multipole.h
+++ b/src/multipole.h
@@ -92,14 +92,18 @@ struct grav_tensor {
 #if SELF_GRAVITY_MULTIPOLE_ORDER > 5
 #error "Missing implementation for order >5"
 #endif
-#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS)
 
+#ifdef SWIFT_DEBUG_CHECKS
   /* Total number of gpart this field tensor interacted with */
   long long num_interacted;
+#endif
 
-  /* Total number of gpart this field tensor did not interact
-   * with. i.e., the distance to the cell was > r_cut_max. */
-  long long num_not_interacted;
+#ifdef SWIFT_GRAVITY_FORCE_CHECKS
+  /* Number of gparts interacted through the tree. */
+  long long num_interacted_tree;
+
+  /* Number of gparts interacted through the grid. */
+  long long num_interacted_pm;
 #endif
 
 #ifdef SWIFT_DEBUG_CHECKS
@@ -314,12 +318,14 @@ INLINE static void gravity_field_tensors_init(struct grav_tensor *l,
 INLINE static void gravity_field_tensors_add(
     struct grav_tensor *restrict la, const struct grav_tensor *restrict lb) {
 #ifdef SWIFT_DEBUG_CHECKS
-  if (lb->num_interacted + lb->num_not_interacted == 0)
+  if (lb->num_interacted == 0)
     error("Adding tensors that did not interact");
-#endif
-#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS)
+
   la->num_interacted += lb->num_interacted;
-  la->num_not_interacted += lb->num_not_interacted;
+#endif
+#ifdef SWIFT_GRAVITY_FORCE_CHECKS
+  la->num_interacted_tree += lb->num_interacted_tree;
+  la->num_interacted_pm += lb->num_interacted_pm;
 #endif
 
   la->interacted = 1;
@@ -1605,11 +1611,15 @@ INLINE static void gravity_M2L_apply(
     struct grav_tensor *restrict l_b, const struct multipole *restrict m_a,
     const struct potential_derivatives_M2L *pot) {
 
-#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS)
+#ifdef SWIFT_DEBUG_CHECKS
   /* Count interactions */
   l_b->num_interacted += m_a->num_gpart;
 #endif
 
+#ifdef SWIFT_GRAVITY_FORCE_CHECKS
+  l_b->num_interacted_tree += m_a->num_gpart;
+#endif
+
   /* Record that this tensor has received contributions */
   l_b->interacted = 1;
 
@@ -2101,12 +2111,14 @@ INLINE static void gravity_L2L(struct grav_tensor *restrict la,
   gravity_field_tensors_init(la, 0);
 
 #ifdef SWIFT_DEBUG_CHECKS
-  if (lb->num_interacted + lb->num_not_interacted == 0)
+  if (lb->num_interacted == 0)
     error("Shifting tensors that did not interact");
-#endif
-#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS)
+
   la->num_interacted = lb->num_interacted;
-  la->num_not_interacted = lb->num_not_interacted;
+#endif
+#ifdef SWIFT_GRAVITY_FORCE_CHECKS
+  la->num_interacted_tree = lb->num_interacted_tree;
+  la->num_interacted_pm = lb->num_interacted_pm;
 #endif
 
   /* Distance to shift by */
@@ -2458,15 +2470,15 @@ INLINE static void gravity_L2P(const struct grav_tensor *lb,
                                const double loc[3], struct gpart *gp) {
 
 #ifdef SWIFT_DEBUG_CHECKS
-  if (lb->num_interacted + lb->num_not_interacted == 0)
+  if (lb->num_interacted == 0)
     error("Interacting with empty field tensor");
+
+  gp->num_interacted += lb->num_interacted;
 #endif
-#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS)
-  gp->num_interacted += lb->num_interacted + lb->num_not_interacted;
-#endif
+
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
-  gp->num_interacted_m2l += lb->num_interacted;
-  gp->num_not_interacted += lb->num_not_interacted;
+  gp->num_interacted_m2l += lb->num_interacted_tree;
+  gp->num_interacted_pm += lb->num_interacted_pm;
 #endif
 
   /* Local accumulator */
diff --git a/src/runner_doiact_grav.c b/src/runner_doiact_grav.c
index a69652b138833b15f76d315a7cce1275e611f994..5e5cbaed193591a7aeed5d3f69647e10d3b4dcc8 100644
--- a/src/runner_doiact_grav.c
+++ b/src/runner_doiact_grav.c
@@ -1636,12 +1636,19 @@ void runner_dopair_recursive_grav(struct runner *r, struct cell *ci,
   /* Are we beyond the distance where the truncated forces are 0? */
   if (periodic && r_lr_check > max_distance) {
 
-#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS)
+#ifdef SWIFT_DEBUG_CHECKS
+    if (cell_is_active_gravity(ci, e))
+      multi_i->pot.num_interacted += multi_j->m_pole.num_gpart;
+    if (cell_is_active_gravity(cj, e))
+      multi_j->pot.num_interacted += multi_i->m_pole.num_gpart;
+#endif 
+
+#ifdef SWIFT_GRAVITY_FORCE_CHECKS
     /* Need to account for the interactions we missed */
     if (cell_is_active_gravity(ci, e))
-      multi_i->pot.num_not_interacted += multi_j->m_pole.num_gpart;
+      multi_i->pot.num_interacted_pm += multi_j->m_pole.num_gpart;
     if (cell_is_active_gravity(cj, e))
-      multi_j->pot.num_not_interacted += multi_i->m_pole.num_gpart;
+      multi_j->pot.num_interacted_pm += multi_i->m_pole.num_gpart;
 #endif
     return;
   }
@@ -1845,9 +1852,14 @@ void runner_do_grav_long_range(struct runner *r, struct cell *ci, int timer) {
       /* Are we beyond the distance where the truncated forces are 0 ?*/
       if (min_radius2 > max_distance2) {
 
-#if defined(SWIFT_DEBUG_CHECKS) || defined(SWIFT_GRAVITY_FORCE_CHECKS)
+#ifdef SWIFT_DEBUG_CHECKS
+        /* Need to account for the interactions we missed */
+        multi_i->pot.num_interacted += multi_j->m_pole.num_gpart;
+#endif
+
+#ifdef SWIFT_GRAVITY_FORCE_CHECKS
         /* Need to account for the interactions we missed */
-        multi_i->pot.num_not_interacted += multi_j->m_pole.num_gpart;
+        multi_i->pot.num_interacted_pm += multi_j->m_pole.num_gpart;
 #endif
 
         /* Record that this multipole received a contribution */