My guess is that current member = no is finding contacts with a non-current membership (but who might also have a current membership as well), rather than contacts who don't have a current membership at all. Can you verify if that's the case? Do these contacts have two memberships, one expired and one current? We could add a help text to Current member in Advanced Search indicating this is what's actually happening in the background or even look at improving this. I have found that current member gives unexpected results in the past as well.
If you use SearchKit instead, searching for:
- with (required) a Contact Membership with status one of expired or cancelled
- without a Contact Membership with status one of new, pending, current (or using whichever statuses are appropriate)
you should get the results you're looking for.