diff --git a/lib/interleaf.cpp b/lib/interleaf.cpp
index ee4c757..0e5d248 100644
--- a/lib/interleaf.cpp
+++ b/lib/interleaf.cpp
@@ -517,6 +517,28 @@ void Interleaf::InterleaveObjects(FileBase *f, const std::vector<Object *> &obje
 
   // Next, interleave the rest based on time
   while (true) {
+    // Update parent time too
+    bool done = false;
+    while (!done) {
+      done = true;
+      for (size_t j=0; j<status.size(); j++) {
+        ChunkStatus &s = status.at(j);
+        Object *obj = s.object;
+
+        for (size_t i=0; i<status.size(); i++) {
+          ChunkStatus &p = status.at(i);
+          if (p.object != obj) {
+            if (p.object->ContainsChild(obj)) {
+              if (p.time < s.time) {
+                p.time = s.time;
+                done = false;
+              }
+            }
+          }
+        }
+      }
+    }
+
     // Find next chunk
     std::vector<ChunkStatus>::iterator s = status.begin();
     if (s == status.end()) {
@@ -583,23 +605,6 @@ void Interleaf::InterleaveObjects(FileBase *f, const std::vector<Object *> &obje
       // Unaffected by time
       break;
     }
-
-    // Update parent time too
-    bool done = false;
-    while (!done) {
-      done = true;
-      for (size_t i=0; i<status.size(); i++) {
-        ChunkStatus &p = status.at(i);
-        if (p.object != obj) {
-          if (p.object->ContainsChild(obj)) {
-            if (p.time < s->time) {
-              p.time = s->time;
-              done = false;
-            }
-          }
-        }
-      }
-    }
   }
 }