@DanielWebb and @Vince_ERAC The way I've been able to make this work is by using a simple JavaScript function. The key there is that you can pass the whole repeat to the function and then return the field value you want so you avoid the dependency cycle error. Here's the function:
function previousvalue (repeat, recordnumber, fieldname)
{
if (recordnumber > 1) {
return repeat[recordnumber-2][fieldname];
}
}
And here's an example of the pulldata calculation you would do in a field outside the repeat:
pulldata("@javascript", "functions.js", "previousvalue", ${occupants}, ${current_record}, "occupant_name")
where occupants is the name of the repeat, current_record is a field outside of the repeat that stores the index of the repeat record you are currently on, and occupant_name is the name of the field inside the repeat that you want to carry the value forward for. I attached a demo .xls to help show how to set this up. This used to be slow with big repeats but with the 3.14 update I haven't encountered any issues.