anchor.diff:  	     , Mul#(n, c__, 4)
         );
   
  +   Bool verbose = False;
  +
      Vector#(n, SigmoidTable#(6)) sigmoidTables <- replicateM(mkSigmoidTable);
      Vector#(n, Server#(Float,Float)) sigmoidServers;
      for (Integer i = 0; i < valueOf(n); i = i + 1) begin
  
positive.code:          let v <- sigmoidServers[i].response.get();
  	 vs[i] = v;
        end
        $display("sigmoid count=%d value=%h", count+1, vs);
        count <= count + 1;
        dfifo.enq(vs);
     endrule
  
     let sinkC <- mkSink(toPipeOut(dfifo));
  
     method Action start(ObjectPointer pointerA, ObjectPointer pointerB, UInt#(ObjectOffsetSize) numElts);
        source.start(pointerA, 0, pack(numElts));
        sinkC.vector.start(pointerB, 0, pack(numElts));
        $display("sigmoid.start numElts=%d", numElts);
     endmethod
     method Action setSigmoidLimits(Float rscale, Float llimit, Float ulimit);
        for (Integer i = 0; i < valueOf(n); i = i + 1) begin
  	 sigmoidTables[i].setSigmoidLimits(rscale, llimit, ulimit);
        end
     endmethod
     method Action updateSigmoidTable(Bit#(32) readPointer, Bit#(32) readOffset, Bit#(32) count);
        entryNumber <= 0;
        numElts <= extend(count);
        updatingSigmoidTable <= True;
        tableSource.start(readPointer, extend(readOffset), 4*extend(count));
     endmethod
     method Bit#(32) tableSize();
        return sigmoidTables[0].tableSize();
  
negative.code:       for (Integer i = 0; i < valueOf(n); i = i + 1) begin
           sigmoidServers[i].request.put(vs[i]);
        end
        if (verbose) $display("consumeInput countInput=%d vs[0]=%h", countInput+1, vs[0]);
        countInput <= countInput + 1;
     endrule
  
  