I beleive you are getting all the months data into dataset. Total calculation will calculate all the months column be coz , you're jus setting the visibility is false. Why can't you use the month parameter to get only required months alone in the dataset instead of hiding the columns. Here how are you populating the column headings? Is it dynamic or static?
You can create a table with Months and select left outer join with your dataset month column. In this query you can add a filter condtion. This way, report data set will have only the selected month's data and total will come correctly.