I agree that it is a bit weird to return non-int, but should we pay a performance cost to actively prevent users from doing this? We can still have -1 as a default, but allow users to use any other value (e.g. None) if they want.