anchor.diff:  	 end
   	 countReg <= c;
   
  -	 Vector#(N,Bool) lastvec = replicate(False);
  -	 lastvec[valueOf(N)-1] = isLast;
  -	 Vector#(N,Bool) firstvec = replicate(False);
  -	 firstvec[0] = isFirst;
  -	 for (Integer k = 0; k < valueOf(K); k = k + 1) begin
  -	    lastFifos[k].enq(lastvec);
  -	    firstFifos[k].enq(firstvec);
  -	 end
  +	 lastFifo.enq(isLast);
  +	 firstFifo.enq(isFirst);
   
         endmethod
      endinterface
  
positive.code:    FloatAlu#(FP_MUL_DEPTH) mul   <- mkFloatMultiplier(defaultValue);
     FloatAlu#(FP_ADD_DEPTH) adder <- mkFloatAdder(defaultValue);
  
     // This could be done in fewer steps
     FIFOF#(Vector#(N,Float)) afifo <- mkFIFOF();
     Vector#(K, PipeOut#(Vector#(N,Float))) aPipesN <- mkForkVector(toPipeOut(afifo));
     Vector#(K, PipeOut#(Vector#(1,Float))) aPipes  = aPipesN; //<- mapM(mkFunnel, aPipesN);
     PipeOut#(Vector#(K,Float))             aPipe   <- mkJoinVector(id, map(unvectorPipeOut, aPipes));
     PipeOut#(Vector#(1,Float))             aFunnelV <- mkFunnel(aPipe);
     PipeOut#(Float)                        aFunnel = unvectorPipeOut(aFunnelV);
  
     Vector#(K, FIFOF#(Vector#(N,Float)))   bfifos <- replicateM(mkFIFOF());
     Vector#(K, PipeOut#(Vector#(N,Float))) bPipesN = map(toPipeOut,bfifos);
     Vector#(K, PipeOut#(Vector#(1,Float))) bPipes = bPipesN; //<- mapM(mkFunnel, bPipesN);
     PipeOut#(Vector#(K,Float))             bPipe  <- mkJoinVector(id, map(unvectorPipeOut, bPipes));
     PipeOut#(Vector#(1,Float))             bFunnelV <- mkFunnel(bPipe);
     PipeOut#(Float)                        bFunnel = unvectorPipeOut(bFunnelV);
  
     Vector#(K,FIFOF#(Vector#(N,Bool))) firstFifos <- replicateM(mkSizedFIFOF(valueOf(K)));
     Vector#(K,FIFOF#(Vector#(N,Bool))) lastFifos <- replicateM(mkSizedFIFOF(valueOf(K)));
     Vector#(K,PipeOut#(Vector#(N,Bool))) firstPipesN = map(toPipeOut, firstFifos);
     Vector#(K,PipeOut#(Vector#(N,Bool))) lastPipesN = map(toPipeOut, lastFifos);
     Vector#(K,PipeOut#(Vector#(1,Bool))) firstPipes1 = firstPipesN; //<- mapM(mkFunnel, firstPipesN);
     Vector#(K,PipeOut#(Bool))            firstPipes = map(unvectorPipeOut, firstPipes1);
     Vector#(K,PipeOut#(Vector#(1,Bool))) lastPipes1 = lastPipesN; //<- mapM(mkFunnel, lastPipesN);
     Vector#(K,PipeOut#(Bool))            lastPipes = map(unvectorPipeOut, lastPipes1);
  
     Vector#(N, Reg#(Bit#(TAdd#(TLog#(FP_ADD_DEPTH),1)))) drainCnts <- replicateM(mkReg(0));
     Vector#(N, Reg#(Bool)) drained <- replicateM(mkReg(False));
  
     Vector#(K, FIFOF#(Float))  accumFifos <- replicateM(mkFIFOF);
     Vector#(K,FIFOF#(Float)) dotfifos <- replicateM(mkFIFOF);
  
     Reg#(Bit#(TLog#(K))) chanReg <- mkReg(0);
  
negative.code:    rule accout;
        let chan <- toGet(chanFifos[1]).get();
        //if (label == 0) $display("%08d label=%d accout chan=%d", cycles, label, chan);
        let last <- toGet(lastPipe).get;
        match {.acc,.*} <- adder.response.get();
        if (last)
  	 dotfifos[chan].enq(acc);
  