With help from Jeff Turnham I was able to fix it using functions:
var offset = 1270; // starting position
var segDur = 5;
var timeSeg = Math.ceil((time - 3) / segDur); // the current time segment (post)
var postAggregate = function(value) {
var total = 0;
var x = 1;
while ((x < value) && (x < thisComp.numLayers - 2)) {
total += comp(thisComp.layer(x+2).name).layer("compData").effect("Post Height")("Slider") + 100;
x += 1;
}
total += comp(thisComp.layer(x+2).name).layer("compData").effect("Image Centre")("Slider");
return total;
};
if (timeSeg < 1) {
var segEnd = segDur + 3;
var endPos = postAggregate(timeSeg+1) + offset;
var startPos = 0 + offset;
} else if (timeSeg < 2) {
var segEnd = timeSeg * segDur + 3;
var endPos = postAggregate(timeSeg) + offset;
var startPos = 0 + offset;
} else {
var segEnd = timeSeg * segDur + 3;
var endPos = postAggregate(timeSeg) + offset;
var startPos = postAggregate(timeSeg - 1) + offset;
}
var segStart = segEnd - segDur;
ease(time, segStart, segEnd, startPos, endPos);