anchor.diff:     rule doFCVT_W_S ( validReq && isFCVT_W_S );
         FSingle f = sV1;
         match {.v, .e} = Tuple2#(Int#(32),FloatingPoint::Exception)'(vFloatToFixed( 6'd0, f, rmd ));
  +
  +      // Handle infinity and NaNs
  +      if (   (isNaN (f))
  +          || (!(f.sign) && (isInfinity (f)))) 
  +         v = (1<<31) - 1;
  +
         Bit #(64) res = signExtend (pack (v));
         let fcsr = exception_to_fcsr(e);
         fa_driveResponse (res, fcsr);
  
positive.code:    rule doFCVT_L_S ( validReq && isFCVT_L_S );
        FSingle f = sV1;
        match {.v, .e} = Tuple2#(Int#(64),FloatingPoint::Exception)'(vFloatToFixed( 6'd0, f, rmd));
        Bit #(64) res = ( pack (v) );
        let fcsr = exception_to_fcsr(e);
        fa_driveResponse (res, fcsr);
  
negative.code:    rule doFCVT_W_D ( validReq && isFCVT_W_D );
        FDouble f = dV1;
        match {.v, .e} = Tuple2#(Int#(32),FloatingPoint::Exception)'(vFloatToFixed( 6'd0, f, rmd ));
  
        // Handle infinity and NaNs
        if (   (isNaN (f))
            || (!(f.sign) && (isInfinity (f)))) 
           v = (1<<31) - 1;
  
        Bit #(64) res = signExtend(pack (v));
        let fcsr = exception_to_fcsr(e);
        fa_driveResponse (res, fcsr);
  