Shaved another 2 bytes off wchrmas pattern, code size is down to 56 bytes! :)
Two subroutine calls and the return statement can be replaced with inlined code and a loop, using a negation as loop counter:
bsr.b .modbsr.b .mod.mod ; do counter updatesrtsneg.l d0 blt.b .mod