There is a predefined signed integer subtype named Integer, declared in the visible part of package Standard. It is constrained to the base range of its type. The position number of an integer value is equal to the value. For a modular type, if the result of the execution of a predefined operator, See section 4.5 Operators and Expression Evaluation is outside the base range of the type, the result is reduced modulo the modulus of the type to a value that is within the base range of the type. Different predefined integer types are allowed to have the same base range.
Corresponding recommendations apply to any other predefined integer types.
There need not be a named integer type corresponding to each distinct base range supported by an implementation. The range of each first subtype should be the base range of its type. Any type descended from a nonstandard integer type is also nonstandard. For a one's complement machine, the high bound of the base range of a modular type whose modulus is one less than a power of 2 may be equal to the modulus, rather than one less than the modulus. It is implementation defined for which powers of 2, if any, this permission is exercised.