I think that would be like this:
first = key(2).value;
second = key(3).value;
newValue = effect("Length 25-80")("Slider");
d = key(numKeys).time - key(1).time;
if (time < key(1).time){
t = key(numKeys).time - (key(1).time - time)%d;
}else if (time > key(numKeys).time){
t = key(1).time + (time - key(numKeys).time)%d;
}else{
t = time;
}
linear(valueAtTime(t), first, second, first, newValue);