@inthehands @thephd Better still, actually use the type system. If you write:
i = j * k
then make sure, at compile time, that the type of i can hold the result for any possible values for the types of j and k.
And uint16, etc, aren't types; they're implementations/representations of types. The types we should be using would be something like 0..65536 (or better some number which makes sense for the application rather than an arbitrary number because we happen to be running on a binary computer today).