diff --git a/src/engine.c b/src/engine.c
index dbb66869bce9fa409d0a49c6660d48b95f7093e8..45ed57f8729d4afdfd3ebcdbda0ee19e090da9e9 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -210,6 +210,9 @@ void engine_repartition(struct engine *e) {
   /* Sorting indices. */
   if (e->s->cells_top != NULL) space_free_cells(e->s);
 
+  /* Report the time spent in the different task categories */
+  if (e->verbose) scheduler_report_task_times(&e->sched, e->nr_threads);
+
   /* Task arrays. */
   scheduler_free_tasks(&e->sched);
 
@@ -1671,7 +1674,8 @@ void engine_rebuild(struct engine *e, const int repartitioned,
   e->restarting = 0;
 
   /* Report the time spent in the different task categories */
-  if (e->verbose) scheduler_report_task_times(&e->sched, e->nr_threads);
+  if (e->verbose && !repartitioned)
+    scheduler_report_task_times(&e->sched, e->nr_threads);
 
   /* Give some breathing space */
   scheduler_free_tasks(&e->sched);
diff --git a/src/scheduler.c b/src/scheduler.c
index d7fe3fb46583b92b9b505cf4f9313aabebf01032..14d3627f0e199a288b0a38fc28a366d855c181be 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -2286,6 +2286,7 @@ void scheduler_free_tasks(struct scheduler *s) {
     s->tid_active = NULL;
   }
   s->size = 0;
+  s->nr_tasks = 0;
 }
 
 /**