anchor.diff:  	 let next_x = x + xstep;
   	 countReg <= countReg + 1;
   	 x <= x + xstep;
  -	 xdown <= xdown - xstep;
   	 first <= False;
  -	 last <= (xdown <= xstep);//(next_x+xstep >= xlimit);
  +	 last <= (x + xstep*2 >= xlimit);
   	 idle <= last;
         endmethod
         method Bool notEmpty();
  -	 return (x < xlimit);
  +	 return !idle;
         endmethod
      endinterface
      method Action start(IteratorConfig#(a) cfg, c ctxt) if (idle);
  
positive.code: 	 countReg <= countReg + 1;
  	 x <= x + xstep;
  	 first <= False;
  	 last <= (next_x+xstep >= xlimit);
  	 idle <= last;
        endmethod
        method Bool notEmpty();
  	 return (x < xlimit);
        endmethod
     endinterface
     interface PipeOut ivpipe;
  
negative.code:    Reg#(a) xstep <- mkReg(0);
     // inclusive limit
     Reg#(a) xlimit <- mkReg(0);
     Reg#(Bool) first <- mkReg(False);
     Reg#(Bool) last <- mkReg(False);
     Reg#(Bool) idle <- mkReg(True);
  