diff --git a/examples/main.c b/examples/main.c
index af079d46d3b56ffc2145468deb64d612cf6ce1f7..302abb3935764a4e4c114e6678b398a11ca60b0b 100644
--- a/examples/main.c
+++ b/examples/main.c
@@ -1023,9 +1023,6 @@ int main(int argc, char *argv[]) {
     engine_dump_snapshot(&e);
     engine_print_stats(&e);
 
-    /* Perform first FOF search after the first snapshot dump. */
-    if (e.policy & engine_policy_fof) fof_search_tree(&s);
-
     /* Is there a dump before the end of the first time-step? */
     engine_check_for_dumps(&e);
 
diff --git a/src/engine.c b/src/engine.c
index b126c00d780599d3022d2853f5ae9a6ae4705cfa..fb54f7251ac19571d528c6bca37891a144dfd83e 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -3263,6 +3263,26 @@ void engine_step(struct engine *e) {
     error("Obtained a time-step of size 0");
 #endif
 
+  /* Perform FOF search to seed black holes. */
+  if (e->policy & engine_policy_fof && !(e->step % 10)) {
+
+    fof_init(e->s);
+
+    struct scheduler *s = &e->sched;
+
+    for(int i=0; i<s->nr_tasks; i++) {
+      
+      struct task *t = &s->tasks[i];
+
+      if (t->type == task_type_fof_self || t->type == task_type_fof_pair) scheduler_activate(s, t); 
+      else t->skip = 1; 
+    }
+
+    engine_launch(e);
+
+    fof_search_tree(e->s);
+  }
+
   /********************************************************/
   /* OK, we are done with the regular stuff. Time for i/o */
   /********************************************************/
diff --git a/src/engine_marktasks.c b/src/engine_marktasks.c
index 20290ce235e7abe7ee744b199bd8a9b8b8bed762..1f622d6d245a559cedbc9da0b37f2a8c81091882 100644
--- a/src/engine_marktasks.c
+++ b/src/engine_marktasks.c
@@ -671,7 +671,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
     
     /* FOF tasks. */
     else if (t_type == task_type_fof_self || t_type == task_type_fof_pair) {
-      scheduler_activate(s, t);
+      //scheduler_activate(s, t);
     }
   }
 }