anchor.diff:  
   	       s.exc.overflow = True;
   	       s.exc.inexact = True;
  -	    end
  -	    else if (expBC < (fromInteger(minexp_subnormal(bc))-2)) begin
  +	 end
  +	 //else if (expBC < (fromInteger(minexp_subnormal(bc))-2)) begin
  +	 else if (underflow) begin
   	       bc.sign = sgnBC;
   	       bc.exp = 0;
   	       bc.sfd = 0;
  
positive.code:       Add#(16, i__, mmbits),
        Add#(j__, TSub#(mbits, 16), mmbits),
        Add#(mmbits,0,48)
        );   
  
     FIFOF#(Tuple3#(Maybe#(FloatingPoint#(e,m)),
  		 FloatingPoint#(e,m),
  
negative.code: 		  s.exc.inexact = True;
  	       end
  	    end
  	 //else begin
  	 else if (inbounds) begin
  	    //if (shift > 0) begin
  	    if (denorm) begin
  	       // subnormal
  	       //Bit#(1) sfdlsb = |(sfdBC << (fromInteger(valueOf(mmbits)) - shift));
  	       //sfdBC = sfdBC >> shift;
  	       //sfdBC[0] = sfdBC[0] | sfdlsb;
  	       //bc.exp = 0;
  	       bc.exp = 0;
  	       sfdBC = 0;
  	       s.exc.underflow = True;
  	       s.exc.inexact = True;
  	    end
  	    else begin
  	       bc.exp = cExtend(expBC + fromInteger(bias(bc)));
  	    end
  
  	    bc.sign = sgnBC;
  	    let y = normalize(bc, sfdBC);
  	    bc = tpl_1(y);
  	    guardBC = tpl_2(y);
  	    s.exc = s.exc | tpl_3(y);
  	 end
  	 //end
  
  	 rState_S4_s <= s;
  	 rState_S4_acc <= acc;
  	 rState_S4_opA <= opA;
  	 rState_S4_bc <= bc;
  	 rState_S4_guardBC <= guardBC;
  	 rValid_S4 <= valid;
        end
     //endrule
  