If I remember correctly, I think C actually handles modulo the same as monkey-c and Ruby handles it differently. Regardless, the fact that monkey-c has chosen to handle modulo in this fashion doesn't mean that it is broken. You will find that there isn't a single uniform way all languages handle modulo with negative numbers.