The Sensex ended at 20,215 up 68 points.
Nifty ended up 20 points at 6,124.
Meanwhile, world shares were under pressure for a second day on Thursday and the dollar slipped against the yen, as uncertainty over when the US Federal Reserve might slow its stimulus programme dominated markets.
Global risk appetite was also frail amid looming fear over a pull-back of stimulus by the US Federal Reserve earlier than expected.
Top European stocks were rangebound after heavy falls on Wednesday, but another 5 per cent dive in Japan's Nikkei in Asian trading left MSCI's world index at a three-week low. Hang Seng and Shanghai Composite slipped 0.3% each.
Markets will be looking at Q4 March 2013 gross domestic product (GDP) data due tomorrow for direction.
India's GDP grew 4.5% in Q3 December 2012, sharply slower than the 5.3% expansion reported for Q2September 2012.
The rupee trimmed its early gains but was still quoted at 56.22 against the dollar today due to selling of the US currency by banks amid its lower value overseas.
Good foreign capital inflows into equity market also affected the market sentiment.
"We do not see a mjor downside in the Rupee at these levels, though no major recovery is also expected in the near term. However, on a short to medium term, the bias for the Rupee remains negative," said Rishi Nathany, CEO, Dalmia Securities Pvt. Ltd.
Broader markets traded in red as well. BSE mid-cap index was flat at 6,475. Small-cap index, however, dropped 21 points to 6,038.
Most of the sectoral indices
Nifty ends above 6,100 on May F&O expiry
Nifty ends below 5,500, FMCG weighs
Vocal cords affected by very rare condition: Google CEO
Rupee hits 10-month low, ends below 56
Rupee up 16 paise at 54.22 on dollar selling