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.

I wouldn't really put the blame for this on Commodore. The integer code for BASIC-65 is common across all the platforms that licensed it from Microsoft.

You might be interested in checking this out: https://github.com/mist64/msbasic