To further explain things (hopefully correctly), the reason your SQL was failing was that it was determining the MAX value once, and adding 1 to it once, and attempting to use that same value for each of the 20 new records you were inserting. Make sense?
I'd guess that if you used your method to insert 1 record, it would work fine.
"If I had been drinking out of that toilet, I might have been killed." -Ace Ventura