>It could also break some code relying on Scan NOT restoring the record pointer.
Wouldn't it be some bad design or some bad use of the SCAN functionality? :) Yes, I also thought about the same. But, to me, someone who uses SCAN should SCAN as per the SCAN condition.
>This is the way it worked ever since Scan was introduced. Alternately, you could do what Sergey meant:
The problem with that is that would open too much new aliases. Basically, what I did by restoring the pointer is the best way in my situation.