Um, that's not a bug, it's by design. There are 4 expressions to convert a floating point number to an integer: ceil, floor, round and int.
Ceil rounds the number up to the nearest integer.
ceil(0.1) =1
ceil(0.5) =1
ceil(4.9) =5
Floor rounds the number down to the nearest integer.
floor(0.1) =0
floor(0.5) =0
floor(4.9) =4
Round rounds the number down if the decimal part is less than .5 and up if it's greater than or equal to .5. It's just your basic arithmetic rounding.
round(0.1) =0
round(0.5) =1
round(4.9) =5
Int acts just like floor, it basically just discards the decimal part.
int(0.1) =0
int(0.5) =0
int(4.9) =4