How robust/accurate is 'floor()' in Maxima?



I've noticed that floor(expression) attempts to evaluate 'expression'
to an actual integer.

How good is it?

Does floor ask bfloat to compute enough precision, and then come back
again with more?

Is there any way to achieve this kind of evaluation, other than programming
it myself?