Personally, I would go with a -= here, and then np.clip() (but I don't know how well that would work with record arrays).