It is nearly identical to `throwBotanIfNegative`, so we probably don't need it as a separate function