You're setting @Month = '20100801'
Then, in you're doing:
BASE.SERVICE_YR_MO BETWEEN CONVERT(CHAR(6),DATEADD(M,-24,CONVERT(datetime,@MONTH + '01',112)),112) AND @MONTH
AND
BASE.PAID_YR_MO BETWEEN CONVERT(CHAR(6),DATEADD(M,-15,CONVERT(datetime,@MONTH + '01',112)),112) AND @MONTH
Adding the string '01' to '20100801' gives you '2010080101', which is not a valid date.
Wayne
Microsoft Certified Master: SQL Server 2008
Author - SQL Server T-SQL Recipes