Hi, my guess would be somewhere about line 2803 in pf.c: when the rule matches for the first time, it reaches the if (af != AF_INET6) which is isn't (pfctl's parse.y sets it to 0 when AF omitted). There's also a subtle name inconsistency between use of 'af' and 'pd->af' (compare ICMP4 vs 6 cases), so I would look around there. I don't see much into it, maybe someone more involved takes a look and corrects me.
Regards, Martin Pelikan