anchor.diff:     FIFOF#(Float)     gFifo <- mkSizedFIFOF(kk);
      Reg#(Bit#(16))  lastCnt <- mkReg(0);
      Reg#(Bit#(16))gatherCnt <- mkReg(0);
  +   Reg#(Bool) gather_phase <- mkReg(0);
  +   //invariant: gather_phase = lastCnt == fromInteger(kk);
   
      FIFOF#(Tuple2#(Bool,Bool))    flFifo <- mkSizedFIFOF(ub_MulLat);
      Vector#(K,FIFOF#(MmToken))    dotfifos <- replicateM(mkFIFOF1);
  
positive.code: 	    gatherCnt <= 0;
  	    lastCnt <= 0;
  	    firstCnt <= 0;
  	 end 
        end
     endrule   
  
negative.code:       adder.request.put(tuple2(resp,acc));
        if(last) begin
  	 lastCnt <= lastCnt+1;
  	 gather_phase <= (lastCnt == fromInteger(kk)-1);
        end
  `ifdef TAGGED_TOKENS
        let row = rowReg;
  