anchor.diff:  	 for(Integer i = 0; i < valueOf(N); i=i+1)
   	    rv[i] = Token{v:vs.pipe.first[i], first:False, last:False};
   `endif
  -	 if (firstReg)
  +	 if (countReg==0)
   	    rv[0].first = True;
  -	 if (lastReg)
  +	 if (countReg+1==cmdFifo.first)
   	    rv[valueOf(N)-1].last = True;
   	 return rv;
         endmethod
         method Action deq;
   	 vs.pipe.deq;
  -`ifdef TAGGED_TOKENS
  -	 row <= row+fromInteger(valueOf(N));
  -`endif
  -	 firstReg <= False;
  -	 lastReg <= (countReg == 2); // ((countReg - 1) == 1);
  -	 countReg <= countReg - 1;
  -	 //$display("mkColSource count=%d first=%d last=%d", countReg, firstReg, lastReg);
  +	 if(countReg+1==cmdFifo.first) begin
  +	    countReg <= 0;
  +	    cmdFifo.deq;
  +`ifdef TAGGED_TOKENS
  +	    tagFifo.deq;
  +	    row <= 0;
  +`endif      
  +	 end
  +	 else begin
  +`ifdef TAGGED_TOKENS
  +	    row <= row+fromInteger(valueOf(N));
  +`endif
  +	    countReg <= countReg+1;
  +	 end
         endmethod
         method Bool notEmpty;
   `ifdef TAGGED_TOKENS
  
positive.code:    FIFOF#(Token)                          bfifo <- mkFIFOF();
     PipeOut#(Token)                        bFunnel = toPipeOut(bfifo);
  
     Vector#(K,FIFOF#(Bool)) firstFifos  <- replicateM(mkSizedFIFOF(ub_MulLat));
     Vector#(K,FIFOF#(Bool)) lastFifos  <- replicateM(mkSizedFIFOF(ub_MulLat+ub_AddLat)); 
     Vector#(K,Vector#(gatherSz,FIFOF#(Float))) accumFifos <- replicateM(replicateM(mkFIFOF1));
     Vector#(K,Reg#(Bit#(TLog#(gatherSz)))) accumFifosEnqIdxs <- replicateM(mkReg(0));
     Vector#(K,Reg#(Bit#(TLog#(gatherSz)))) accumFifosDeqIdxs <- replicateM(mkReg(0));
     Vector#(K,Reg#(Bit#(32))) firstCnts <- replicateM(mkReg(0));
     Reg#(Bit#(32)) lastCnt   <- mkReg(0);
     Reg#(Bit#(32)) gatherCntA <- mkReg(0);
     Reg#(Bit#(32)) gatherCntB <- mkReg(0);
     Vector#(K,FIFOF#(Token)) dotfifos   <- replicateM(mkFIFOF1);
     
     Reg#(Bit#(TLog#(K))) chanReg <- mkReg(0);
     Vector#(2,FIFO#(Bit#(TLog#(K)))) chanFifos <- replicateM(mkSizedFIFO(valueOf(TMul#(gatherSz,K))));
  
     function Bit#(TLog#(N)) i_v(Integer i) = fromInteger(i);
  
     Reg#(Bit#(32)) cycles <- mkReg(0);
     rule countCycles;
  
negative.code: 	 let b <- sinks[j].finish();
  	 let c = dotprodCount-fromInteger(kk);
  	 int jint = fromInteger(j);
  	 if (timing || verbose1) $display($format(fshow(cycles)+fshow("    finishSink c")+fshow(c)+fshow(" j=")+fshow(jint)));
  	 dotprodCount <= c;
  	 if (c == 0) begin
  	    running <= False;
  