Negative values are warnings, not errors; failing on them breals encoding when
it would otherwise work.
Unfortunately, these negative numbers are being converted into large positive
ones through the cgo bridge, so this becomes a slightly more complicated
check than necessary.