When decoding, prefer ptrdiff_t to int for buffer positions etc.