If you want the whole animation triggered at each marker (rather than centered at each marker), it would be more like this:
m = thisComp.marker;
t = 0;
if (numKeys > 1 && m.numKeys > 0){
d = key(2).time - key(1).time;
n = m.nearestKey(time).index;
if (time < m.key(n).time) n--;
if (n > 0){
tm = time - m.key(n).time;
if (tm < d){
t = linear(tm,0,d,key(1).time,key(2).time);
}else{
t = linear(tm,d,d*d,key(2).time,key(1).time);
}
}
}
valueAtTime(t)
Dan