   while true
     phase = mod2 time
     sub_rule_idx = mod time, vacuum_period
+    if sub_rule_idx is 0
+      break unless callback curPattern, time
     curPattern = evaluateCellList stable_rules[sub_rule_idx], curPattern, phase
     time += 1
-    if mod(time, vacuum_period) is 0
-      break unless callback curPattern, time
   return
 
 class Library

    console.log "####   #{i}. #{normalizedRle part}"
    #now analyze this part
    res = analyzeFragment rule, part, time
    console.log "####        #{JSON.stringify res}"

    


    #wait for the cycle  
    result = {cycle: false}
    patternEvolution rule, pattern, time, (curPattern, t) ->
      dt = t-time
      if dt is 0 then return true
      Cells.sortXY curPattern
      eq = Cells.shiftEqual pattern, curPattern, mod2 dt
      if eq
        result.cycle = true
