I you change a field that belongs to the index used by a for each on a table (database or temp) you can get that record again if the new keyvalue is greater than the previous value, or lower for a descending index seqment.
preselect will guard you from that.
using another index can also help