I don't think what you are seeing is a bug. Your check for EOF() in rCursor is not going to work because the UPDATE opens its own copies of the tables and the record pointers in the rCursor alias are not affected by the processing of the UPDATE command.