ai-bookkeeper keeps money in integer cents, so the one place a float can leak in is parseCents. A probe with 20 odd strings found two faults.
1.005came out as 100 cents. In floating point1.005 * 100is100.49999999999999, so rounding that product drops the half cent. It now rounds the decimal value (101);2.675gives 268 instead of 267.-0.001came out as-0cents. It prints as 0 but failsObject.is(x, 0)and strict deep-equal checks. It is now plain 0.
Both are pinned in parsecents-rounding.test.mjs. The full suite (1,256 tests) passes. Half-cent amounts are rare in bank exports, so this is hygiene, not a user-visible fix; the probe used my own strings, not a real export.