anchor.diff:     a value;
      Bool first;
      Bool last;
  -} IteratorValue#(type a) deriving (Bits);
  +   b ctxt;
  +} IteratorValue#(type a, type b) deriving (Bits);
   
   interface IteratorWithContext#(type a, type c);
      interface PipeOut#(a) pipe;
  -   interface PipeOut#(IteratorValue#(a)) ivpipe;
  +   interface PipeOut#(IteratorValue#(a,c)) ivpipe;
      method a count();
      method Bool isFirst();
      method Bool isLast();
  
positive.code:    function PipeOut#(Vector#(n, a)) toPipeOut(Gearbox#(m, n, a) in);
        return (interface PipeOut#(Vector#(n,a));
  		 method first = in.first;
  		 method deq = in.deq;
  		 method notEmpty = in.notEmpty;
  	      endinterface);
  
negative.code:       endmethod
     endinterface
     interface PipeOut ivpipe;
        method IteratorValue#(a,c) first();
  	 return IteratorValue { value: x, first: first, last: last, ctxt: ctxtReg };
        endmethod
        method Action deq if (!idle);
  	 let next_x = x + xstep;
  