The main feature of guarded integers is that all arithmetic on them is overflow-checked. Any arithmetic involving guarded integers results in a guarded integer, and any arithmetic involving invalid values, or arithmetic resulting in overflows or other errors (such as division by zero) likewise results in an invalid value. The idea is that integer arithmetic using guarded integers should be possible to write very straightforwardly and without having to consider any of these special cases; if any error occurred along the way, the result will be invalid. These invalid values can then be checked for and handled right when the result is converted back to a regular integer.