When my Honey Money balance goes negative, I expect to be charged enough to bring my balance to zero, not a third of a cent less than that.
(Beyond anything else, the fact this this is possible suggests some rather disturbing images of the abuse of floating point to represent money.)
I reported it via mail, right now I have H$0.002
It’s not the abuse of floating point that it seems like! It’s just that we compute (as floating point) your up-to-the-second balance, with interest, but you only every pay or get charged integer numbers of cents. Very gory details in our original spec for how we implemented premium credit.
PS: This does imply we should … not display it that way? I mean, the fact that it looks like a bug is the bug. Definitely grateful that you reported this and you should DM me to claim your bug bounty (stickers if you’re not already inundated, or some honey money!).
Alright, but I still think something is iffy here. It must be that you already round, because there are only three decimal digits. But why three and not two?
But also: my mental model is that the balance should always be non-negative, with a negative balance triggering a charge to top it up. For the balance to be negative, even slight, after the charge feels like it should trigger another charge, even if that second charge is skipped because it’s too small to be worth doing. The conceptually simpler thing to do would be to always round up, so that the simple rule “when you have a negative balance, your card is charged so that no longer will be true” becomes correct.
But even just rounding the display to cents would make more sense. (But also, are you charging me interest on my negative balance? It’s a small enough amount of money to not really matter, but it somehow feels surprising to be paying interest to Beeminder.)