Woah, brian smith got stuck by this too?
It happens to the best of us I guess.
Here's the deal: %obj[0], when deleted, moves %obj[1] to %obj[0]'s place.
When the loop increments, it ends up deleting %obj[2], now %obj 1, skipping %obj[1], now %obj 0.
Solution: use a while loop
While(isobject(%obj[0]))
%obj[0].delete();
Boom, done.