*snip*
I think there is an error in your loop when the list has an even count of items.
*snip*
You're right, the loop must be less by one:
J := List.Count;
for I := 0 to Pred(J div 2) do
List.Exchange(I, Pred(J) - I);
But my question was whether
Thaddy wants to just reverse the list by playing tricks with CustomSort.