I find it amazing just how hard Commodore crippled the integer type in their BASIC interpreter. Not only does it take 5(!!) bytes to store a 16 bit value, but it is often slower than the floating point version of common operations.
You'd think this would have hurt them more than it did. But in fact the idea of an "Operating System" had limited real utility in devices this small. There just wasn't enough space to do much useful for the user, and all "real" apps and games ended up rolling their own versions of everything anyway.
The C64's primary interface to the software developer was a hardware interface. And as it happened that mostly worked just great (disk I/O excepted, of course).
You might be interested in checking this out: https://github.com/mist64/msbasic