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: 		  s.exc.inexact = True;
  	       end
  	    end
  	    else begin
  	       let shift = fromInteger(minexp(bc)) - expBC;
  	       if (shift > 0) begin
  		  // subnormal
  		  Bit#(1) sfdlsb = |(sfdBC << (fromInteger(valueOf(mmbits)) - shift));
  
  		  sfdBC = sfdBC >> shift;
  		  sfdBC[0] = sfdBC[0] | sfdlsb;
  
  		  bc.exp = 0;
  	       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 <= tuple5(s,
  			     acc,
  			     opA,
  			     bc,
  			     guardBC);
  	 rValid_S4 <= valid;
        end
     //endrule
  
negative.code:       endmethod
     endinterface
  endmodule
  