@lasalesi sounds like what I just found…
Specifically changing
amount = rounded(frappe.safe_eval(formula, self.whitelisted_globals, data))
back to
amount = frappe.safe_eval(formula, self.whitelisted_globals, data)
sorted out the rounding for me as far as I could tell.