In theory it'd be managed in part by AutoExec, but marches have the same buffid and thus AutoExec doesn't seem to recognize the second march correctly. When I tried it a while back, it'd recognize the first march gained but not the second, then only recognize that the buff was lost once both had worn.
You can still do something like this for AutoExec:
Code
<register event="gainbuff_March" silent="true">sc var inc Marches; input /ma "Dancing Chains" <t></register>
<register event="losebuff_March" silent="true">sc var dec Marches; input /ma "Dancing Chains" <t></register>
and then have an if buffactive="march" rule in Spellcast, but it won't work perfectly.