anchor.diff:  	 sinks[j].vector.start(descriptorC.pointer, pack(extend(startC>>nshift)), fromInteger(kk/n));
   	 if (verbose || verbose1) $display($format(fshow(cycles)+fshow("      sinks[")+fshow(jint)+fshow("].start")+fshow(startC)));
   
  -	 // this one counts by one rather than 1/n because the source values are unfunneled before mul/add
  -	 if (j == 0)
  -	    firstLastPipe.start(truncate(descriptorA.numColumns));
         endrule
   
         rule finishSourceA;
  
positive.code:       for (Integer j = 0; j < jj; j = j + 1) begin
  	 startAOffset[j] <= fromInteger(j)*numColumnsA;
  	 startCOffset[j] <= fromInteger(j)*numRowsB;
        end
        for (Integer k = 0; k < kk; k = k + 1) begin
  	 for (Integer j = 0; j < jj; j = j + 1) begin
  	    let index = j*kk + k;
  `ifdef OLDWAY
  	    fxdotprods[index].numElts <= truncate(numColumnsA);
  `endif
  	 end
  	 startBOffset[k] <= fromInteger(k)*numColumnsB;
        end
     endmethod
  
negative.code: 	 Vector#(K,Float) vs;
  	 for (Integer k = 0; k < kk; k = k + 1) begin
  	    let dpnum = j*kk+k;
  	    let v <- toGet(fxpipes[j][k]).get();
  	    //let indexi = tuple2(tpl_1(index), tpl_2(index)+fromInteger(k));
  	    //if (verbose) $display($format(fshow(cycles)+fshow("    dotprodvalue index=")+fshow(indexi)+fshow(" dotprod=")+fshow(v)));
  	    int jint = fromInteger(j);
  