       (let [v (first verts)]
         (if (should-signal? v thresh)
           (do (debug (:id v) "signaling")
-              (signal! v sync-vertex-signal)
-              (recur (inc sigs) (next verts)))
+              (recur (long (+ sigs (signal! v sync-vertex-signal))) (next verts)))
           (recur sigs (next verts))))
       sigs)))
 

        max-ops   (:max-ops ctx)
        processor ((:processor ctx) s-thresh c-thresh)
        threads   (:threads ctx)
        watch-id  (keyword (gensym))]
    (reify
      #?@(:clj
           [clojure.lang.IDeref

        sig-fn    (:signal-fn ctx)
        max-iter  (:max-iter ctx)
        watch-id  (keyword (gensym))
        ->result  (fn [type iter sigs colls t0]
                    (remove-watch! g :remove-vertex watch-id)
                    (execution-result type sigs colls t0 {:iterations iter}))]
    (reify
      #?@(:clj
           [clojure.lang.IDeref
