Oh well, here's a development update MDFB-080414-DigicIII.bas. This one adds a video clip record mode, but it's probably not useful to you (at least not yet)... read on:
As you can see from the script comments, this one is only an improvement to 080411 if you are running a build which has the "dm_movie" virtual button, which changes the dialmode to video mode. AFAIK this currently means only the A570IS using the build referred to here:
http://chdk.setepontos.com/index.php/topic,488.msg7446.html#msg7446. Consequently I didn't bother posting a Digic II version since I figured anyone who's capable enough to add dm_movie work for a Digic II camera is capable of changing those get_prop's

.
Oh and there are a ton of sleep commands down there in the video record loop, I didn't even try to cut them down yet, just kept adding them everywhere until it finally worked.

rem Fudgey's Fast/Slow/Video Motion Detector with masks.
rem Requires a build with "dm_movie" included.
rem (At the time of writing only a570is KAP test build has this feature).
rem
rem Changes to MDFB 080411:
rem Burst/Review time is now burst/review/video time.
rem In video mode it specifies how long in seconds to film.
rem
rem Fast/Slow mode is now fast/slow/video mode. Video mode is
rem never fast, mode change takes some time. To optimize it try decresing
rem sleep times in video_md_loop to whatever minimum values your camera
rem allows. The most important one is after the line 'press "dm_movie"'
rem because that delay is waited between detection and start of record.
rem
rem If you set video time 0 s, about 1 second of video will be shot.
rem
rem Shortened the title a bit.
rem
rem Developed on A570IS by fudgey. May work on all Digic III cameras.
rem Allbest build 34 or higher (or compatible md_detect_motion) is required for
rem fast/slow MD modes, a build with dm_movie is required for video mode.
rem Digic II needs a small modification: "get_prop 206 p" -> "get_prop 205 p"
@title Fast MD 080414
@param a Columns
@default a 6
@param b Rows
@default b 4
@param c Threshold (0-255)
@default c 10
@param g Burst/Review/Video time (s)
@default g 0
@param d Compare Interval (ms)
@default d 7
@param h Pixel Step (pixels)
@default h 6
@param f Channel (0U,1Y,2V,3R,4G,5B)
@default f 1
@param n Timeout (10s of seconds)
@default n 30
@param e Trigger Delay (0.1 sec)
@default e 5
@param i Masking (0=No 1=Mask 2=Use)
@default i 0
@param j Mask Columns Left
@default j 0
@param k Mask Columns Right
@default k 0
@param l Mask Rows Top
@default l 0
@param m Mask Rows Bottom
@default m 0
@param o Shoot fast=0 slow=1 video=2
@default o 0
if a<1 then a=1
if b<1 then b=1
if i<0 then i=0
if i>2 then i=2
if j<0 then j=0
if k<0 then k=0
if l<0 then l=0
if m<0 then m=0
if j>a then j=a
if k>a then k=a
if l>b then l=b
if m>b then m=b
if g<0 then g=0
if f<0 then f=1
if f>5 then f=1
if f=0 then print "Channel: U chroma"
if f=1 then print "Channel: Luminance"
if f=2 then print "Channel: V chroma"
if f=3 then print "Channel: Red"
if f=4 then print "Channel: Green"
if f=5 then print "Channel: Blue"
if n<1 then n=1
e=e*100
g=g*1000
n=n*10000
if o=1 then goto "slow_md"
if o=2 then goto "video_md"
print "Fast shoot mode"
:fast_md_loop
press "shoot_half"
t=0
do
do
get_prop 206 p
until p=1
md_detect_motion a, b, f, n, d, c, 1, t, i, j+1, l+1, a-k, b-m, 9, h, e
until t>0
let X=get_tick_count
:contloop1
let U=get_tick_count
let V=(U-X)
if V<g then goto "contloop1"
release "shoot_full"
do
get_prop 206 p
until p<>1
goto "fast_md_loop"
:slow_md
print "Slow shoot mode"
:slow_md_loop
t=0
do
md_detect_motion a, b, f, n, d, c, 1, t, i, j+1, l+1, a-k, b-m, 0, h, e
until t>0
if g>1 then goto "contshoot2" else shoot
goto "slow_md_loop"
:contshoot2
press "shoot_full"
let X=get_tick_count
:contloop2
let U=get_tick_count
let V=(U-X)
if V<g then goto "contloop2"
release "shoot_full"
do
get_prop 206 p
until p<>1
goto "slow_md_loop"
:video_md
if g<1 then g=1
print "Video clip mode"
:video_md_loop
do
md_detect_motion a, b, f, n, d, c, 1, t, i, j+1, l+1, a-k, b-m, 0, h, e
until t>0
press "dm_movie"
sleep 1000
press "shoot_full"
print "starting video record"
sleep 300
release "shoot_full"
let X=get_tick_count
:videowaitloop
let U=get_tick_count
let V=(U-X)
if V<g then goto "videowaitloop"
press "shoot_full"
print "ending video record"
sleep 300
release "shoot_full"
sleep 1000
release "dm_movie"
sleep 1000
do
get_prop 206 p
until p<>1
goto "video_md_loop"