anchor.diff:     PipeOut#(Bit#(32)) mismatchCountPipe <- mkReducePipe(mkMap(my_add), mismatchCountsPipe);
   
      rule indicate_finish;
  -      let mismatchCount <- toGet(mismatchCountPipe).get();
  -      cf.deq;
  -      indication.readDone(mismatchCnt);
  +      let mc <- toGet(mismatchCountPipe).get();
  +      mc = mc + mismatchCnt;
  +      if (iterCnt == 1) begin
  +	 cf.deq;
  +	 indication.readDone(mc);
  +	 mc = 0;
  +      end
  +      mismatchCnt <= mc;
  +      iterCnt <= iterCnt - 1;
      endrule
      
      interface dmaClient = re.dmaClient;
  
positive.code: 	 cf.enq(?);
  	 numWords  <= nw;
  	 burstLen  <= bl;
  	 for(Integer i = 0; i < valueOf(NumEngineServers); i=i+1) begin
  	    iterCnts[i] <= ic;
  	    mismatchCounts[i] <= 0;
  
negative.code:    Reg#(Bit#(32))    mismatchCnt <- mkReg(0);
     FIFO#(void)                cf <- mkSizedFIFO(1);
     
     Reg#(Bit#(32))                                   iterCnt <- mkReg(0);
     Vector#(NumEngineServers, Reg#(Bit#(32)))       iterCnts <- replicateM(mkReg(0));
     Vector#(NumEngineServers, Reg#(Bit#(32)))        srcGens <- replicateM(mkReg(0));
     Vector#(NumEngineServers, Reg#(Bit#(32))) mismatchCounts <- replicateM(mkReg(0));
  