The RFC defines numeric types as unsigned; in KoAP (to prevent overflow) the next larger numeric type is used (e.g. a Long is used to store an unsigned int32).
unsigned integers would simplify a lot of internal code as well as simplify the public facing API. unsigned integers should be used when no longer experimental.