diff --git a/src/engine_maketasks.c b/src/engine_maketasks.c
index 59784b8bdc33bd7683c9d634d122d50135e09a3e..40b34d8b20af7061ae117aa00b60fa2ce8ee5c64 100644
--- a/src/engine_maketasks.c
+++ b/src/engine_maketasks.c
@@ -4644,8 +4644,12 @@ void engine_make_fof_tasks(struct engine *e) {
   struct scheduler *sched = &e->sched;
   ticks tic = getticks();
 
-  if (e->restarting) error("Running FOF on a restart step!");
+  if (e->restarting) {
+    /* Re-set the scheduler. */
+    scheduler_reset(sched, engine_estimate_nr_tasks(e));
+  }
 
+  
   /* Construct a FOF loop over neighbours */
   if (e->policy & engine_policy_fof)
     threadpool_map(&e->threadpool, engine_make_fofloop_tasks_mapper, NULL,