I would prefer a more general, ADA like, solution. // ADA SUBTYPE Natural IS Integer RANGE 0 .. Integer'Last; SUBTYPE NonNegFloat IS Float RANGE 0.0 .. Float'Last; and also : SUBTYPE CapitalLetter IS Character RANGE 'A' .. 'Z'; just my 2 euro cents; Bjoern