Date out by a whole day

Correct. This is because the formula service would be overloaded if it had to recalculate every second (minute?) of the day.

In general, date comparisons should work fine (if comparing a date with a date) but comparing a date with a datetime requires typecasting, which often gives unintuitive behaviour.
And indeed, Fibery uses UTC on the backend, which is where formulas are calculated.