From https://developers.google.com/protocol-buffers/docs/encoding#types:

"If you use int32 or int64 as the type for a negative number, the resulting varint is always ten bytes long – it is, effectively, treated like a very large unsigned integer"