C# (319299 characters)
using System;class D{static void Main(){string a="s",z="",w=" on the wall",q=", ",p=".\n",b=" bottle",c=" of beer",t=".\nTake one down and pass it around, ",s=".\nGo to the store and buy some more, ";forbeer";for(int O=99;O>=1;)Console.WriteLine(O+b+(O>1?a:z)+c+w+q+O+b+(O>1?a:z)+c++c+p+(--O>0?t+O"Take one down and pass it around, "+O:s+"99""Go to the store and buy some more, 99")+b+(O>1O==1?az:O<1?a:z)+c+w+p);}}