А ты уверен, что в списке lst — 800 строк? Вообще-то их там тоже 684, потому что 116 элементов (пятёрок) в него не добавились.
Нужно делать так:
if(i % 5 != 0)
lst.Add(str);
else
i--;
Тогда в случае, если выпала пятёрка, уменьшая счётчик, ты добавишь ещё одну попытку.
Чтобы код не обрабатывался...