The Sensex and BSE fell by 2% in the opening trade early Monday, but later turned poitive.
The rupee recovered from early losses, but was still trading marginally lower against the US dollar, while bond yield hit a fresh 16-month high.
BSE closed higher by 138.71 points or 0.41% to close at 33,601.68.
Nefty 50 rose by 55.50 points or 0.54%, to close at 10,388.75.
All the sectoral indices on BSE, except realty and energy, ended higher led by metal, which was up 1.83%, and auto 1.21%. On NSE, the Nifty PSU Banks rallied 2.38%.
In early trade, the Sensex declined 2.6% or 867.34 points at 32,595.63, while the 50-share Nifty index was at 10,074.80, down 2.5%.