I've just realised that 'binary' checks for the presence of a datapoint, not for the presence of a non-zero datapoint.
Which interestingly means that it's not binary at all: the aggday code will only ever return '1' because it'll only be called in contexts where datapoints exist. So maybe it should be renamed to 'unary', with 'binary' rewritten as something like @drtall's proposal, or
'binary' : lambda x : 0 if ( np.sum(x) == 0 ) else 1
updated to reflect things that I'd skipped over in my suprise and haste.
updated again to retract the lousy code I wrote
and yet again to replace and redact my lousy code for overall coherence of the thread (: