The set of values for a modular integer type are the values from 0 to one less than the modulus, inclusive. 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. 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.