diff --git a/src/engine.c b/src/engine.c
index 94cee6ba9979f9d23b2372fd8c14780f030e9f8f..cd989bb5d0dbc5a4ad0ea08d35d17cad5088fa24 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -4408,6 +4408,17 @@ void engine_rebuild(struct engine *e, int clean_smoothing_length_values) {
   /* Construct the list of purely local cells */
   space_list_local_cells(e->s);
 
+  /* Update the global counters of particles */
+  long long num_particles[3] = {e->s->nr_parts, e->s->nr_gparts,
+                                e->s->nr_sparts};
+#ifdef WITH_MPI
+  MPI_Allreduce(MPI_IN_PLACE, num_particles, 3, MPI_LONG_LONG, MPI_SUM,
+                MPI_COMM_WORLD);
+#endif
+  e->total_nr_parts = num_particles[0];
+  e->total_nr_gparts = num_particles[1];
+  e->total_nr_sparts = num_particles[2];
+
   /* Re-compute the mesh forces */
   if ((e->policy & engine_policy_self_gravity) && e->s->periodic)
     pm_mesh_compute_potential(e->mesh, e->s, &e->threadpool, e->verbose);