Good news, bad news. The good news is that I think the measures all work exactly per your requirements now. This screenshot shows the zeros are now being handled properly:
The bad news is that I don’t understand why the previous measure didn’t work. Here’s the change I made:
Previously, this filter condition was expressed as [OverallAttend] <> BLANK()
To my mind, those statements should be exactly equivalent, but apparently they are not. The NOT(ISBLANK()) construct seems to treat blanks and zeroes as distinctly different results, while the <> BLANK() construct seems to treat blanks and zeroes as the same. Need to do more research on this, and probably make a video about what I find out.
But that’s my problem to figure out - the attached solution file should hopefully fully address your needs. Thanks for your patience - busy week, and a lot to unpack here. Fun problem, though.
P.S. figured out the BLANK vs. ISBLANK issue. See post below for details: