I confess I have grown increasingly in favor of how common lisp does this. The basic `/` creates rationals. And "floor" is a multiple value return where the first value is the floor and the second is the remainder.
Granted, getting used to multiple value calls takes getting used to. I think I like it, but I also think I emphatically did not like it initially.