312c312,313
< vfpFpSToFixed(float val, bool isSigned, bool half, uint8_t imm)
---
> vfpFpSToFixed(float val, bool isSigned, bool half,
> uint8_t imm, bool rzero = true)
314c315,316
< fesetround(FeRoundZero);
---
> int rmode = fegetround();
> fesetround(FeRoundNearest);
316a319,322
> if (rzero)
> fesetround(FeRoundZero);
> else
> fesetround(rmode);
413c419,420
< vfpFpDToFixed(double val, bool isSigned, bool half, uint8_t imm)
---
> vfpFpDToFixed(double val, bool isSigned, bool half,
> uint8_t imm, bool rzero = true)
414a422
> int rmode = fegetround();
418c426,429
< fesetround(FeRoundZero);
---
> if (rzero)
> fesetround(FeRoundZero);
> else
> fesetround(rmode);