simplify is_negative loop
add sign.is_(nonnegative|nonpositive)