Very good article, thanks. When I picked up the code snippet and tried to use it, I saw one problem. In the last section of code, labeled "Create Forecast", the term that's multiplied by the seasonality factor is missing a parenthesis. That is,
MAX(A) + (MAX(B) * MAX(Forecastkey) + 1) should be
(MAX(A) + (MAX(B) * MAX(Forecastkey) + 1))
Correct me if I'm wrong, but this is the change that it took to make my forecast look correct.