Code:
<RegExp input="$$1" output="\1" dest="20">
<expression><duration>(\d+)</duration></expression>
</RegExp>
<!-- 24xxxx minutes+seconds mixed together -->
<RegExp input="" output="0" dest="19">
<expression/>
</RegExp>
<RegExp input="$$20" output="\1" dest="19">
<expression>(\d+)\d{4}</expression>
</RegExp>
<!-- xx6xxx second seconds digit -->
<RegExp input="" output="0" dest="18">
<expression/>
</RegExp>
<RegExp input="$$20" output="\1" dest="18">
<expression>$$19(\d)\d{3}</expression>
</RegExp>
<!-- xxx8xx milliseconds part for rounding +0/+1sec -->
<RegExp input="" output="0" dest="17">
<expression/>
</RegExp>
<RegExp input="$$20" output="1" dest="17">
<expression>$$19$$18([5-9])\d{2}</expression>
</RegExp>
<!-- 24xxxx divided by 6 -> minutes -->
<RegExp input=";0=0,1,2,3,4,5,;1=6,7,8,9,10,11,;2=12,13,14,15,16,17,;3=18,19,20,21,22,23,;4=24,25,26,27,28,29,;5=30,31,32,33,34,35,;6=36,37,38,39,40,41,;7=42,43,44,45,46,47,;8=48,49,50,51,52,53,;9=54,55,56,57,58,59,;10=60,61,62,63,64,65,;11=66,67,68,69,70,71,;12=72,73,74,75,76,77,;13=78,79,80,81,82,83,;14=84,85,86,87,88,89,;15=90,91,92,93,94,95,;16=96,97,98,99,100," output="\1" dest="16">
<expression>;(\d+)=(?:\d+,)*?$$19,</expression>
</RegExp>
<!-- 24xxxx modulo 6 -> first seconds digit -->
<RegExp input=";0=0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,;1=1,7,13,19,25,31,37,43,49,55,61,67,73,79,85,91,97,;2=2,8,14,20,26,32,38,44,50,56,62,68,74,80,86,92,98,;3=3,9,15,21,27,33,39,45,51,57,63,69,75,81,87,93,99,;4=4,10,16,22,28,34,40,46,52,58,64,70,76,82,88,94,100,;5=5,11,17,23,29,35,41,47,53,59,65,71,77,83,89,95,
" output="\1" dest="15">
<expression>;(\d+)=(?:\d+,)*?$$19,</expression>
</RegExp>
<!-- seconds ($$15$$18) +0/+1 by milliseconds rounding -->
<RegExp input=";0=$$15$$18-$$15$$18,;1=00-01,01-02,02-03,03-04,04-05,05-06,06-07,07-08,08-09,09-10,10-11,11-12,12-13,13-14,14-15,15-16,16-17,17-18,18-19,19-20,20-21,21-22,22-23,23-24,24-25,25-26,26-27,27-28,28-29,29-30,30-31,31-32,32-33,33-34,34-35,35-36,36-37,37-38,38-39,39-40,40-41,41-42,42-43,43-44,44-45,45-46,46-47,47-48,48-49,49-50,50-51,51-52,52-53,53-54,54-55,55-56,56-57,57-58,58-59,59-60," output="\1" dest="14">
<expression>;$$17=(?:\d+-\d+,)*?$$15$$18-(\d+),</expression>
</RegExp>
<!-- minutes +1 in case we reached full minute by rounding -->
<RegExp input=";60=0-1,1-2,2-3,3-4,4-5,5-6,6-7,7-8,8-9,9-10,10-11,11-12,12-13,13-14,14-15,15-16,16-17,;$$14=$$16-$$16," output="\1" dest="13">
<expression>;$$14=(?:\d+-\d+,)*?$$16-(\d+),</expression>
</RegExp>
<!-- seconds 00 in case we reached full minute by rounding -->
<RegExp input=";60=00;$$14=$$14;" output="\1" dest="12">
<expression>;$$14=(\d+);</expression>
</RegExp>
<RegExp input="$$13:$$12" output="\1" dest="10">
<expression/>
</RegExp
And i guess you can see drawbacks. Because it depends on generated number lines, it will work correctly only up to the numbers what you have in scraper (in this case 1000999 = 16:40.999).
From my point of view you should make official feature request (in Trac) for some kind of duration formating because it can be handy for others too.
(only briefly tested). I hope i didn't any stupid mistake.