The 30-share Sensex was trading 149.75 points or 0.37 per cent higher at 40,562.32 in morning trade.
After swinging nearly 330 points, the Sensex finished 172.69 points or 0.43 per cent higher at 40,412.57.
The appreciating rupee and mixed leads from other Asian markets too influenced sentiment, traders said.
BSE Sensex closed 247.55 points or 0.61 per cent lower at 40,239.88.
The 30-share index was trading 33.67 points or 0.08 per cent lower at 40,453.76 in morning trade.
The 30-share BSE Sensex stabilised in afternoon trade and settled with gains of 42.28 points or 0.10 per cent at 40,487.43.
The US Federal Reserve interest rate decision on Thursday will be a major event that would be keenly tracked by markets globally.
The BSE Sensex settled at 40,445.15, down 334.44 points or 0.82 per cent.
At the closing bell, the 30-share BSE Sensex was lower by 70.70 points or 0.17 per cent at 40,779.59.
BSE Sensex was trading 100.56 points, lower at 40,749.73 at 1149 hours.