diff --git a/IPython/parallel/controller/scheduler.py b/IPython/parallel/controller/scheduler.py
index b260d0c..af76c86 100644
--- a/IPython/parallel/controller/scheduler.py
+++ b/IPython/parallel/controller/scheduler.py
@@ -326,9 +326,17 @@ class TaskScheduler(SessionFactory):
             after = Dependency(after)
             if after.all:
                 if after.success:
-                    after = after.difference(self.all_completed)
+                    after = Dependency(after.difference(self.all_completed),
+                                success=after.success,
+                                failure=after.failure,
+                                all=after.all,
+                    )
                 if after.failure:
-                    after = after.difference(self.all_failed)
+                    after = Dependency(after.difference(self.all_failed),
+                                success=after.success,
+                                failure=after.failure,
+                                all=after.all,
+                    )
             if after.check(self.all_completed, self.all_failed):
                 # recast as empty set, if `after` already met,
                 # to prevent unnecessary set comparisons