Wiping out early losses, the benchmark BSE Sensex today added 39 points to remain at a one-month high amid overseas capital inflows ahead of the assembly poll results.
However, the gauge failed to close above the 21,000 level for the second day in a row after touching an intra-day high of 21,049.84.
The index dropped to the day's low of 20,922.45 points in early trade. It ended at 20,996.53, a gain of 38.72 points, or 0.18 per cent, the highest close since November 3. Yesterday, the Sensex had surged 249 points.
The broader Nifty index on the National Stock Exchange rose 18.8 points, or 0.30 per cent, to 6,259.90, after trading in a range of 6,230.75 to 6,275.35 during the session.
Brokers said the markets remained in a bullish mood for the second straight day after exit polls showed leads for the main opposition party BJP in the just-concluded state assembly elections, for which results would come out on Sunday.
They said further support came from a firm trend in some Asian stock indices and a higher opening in Europe ahead of a US jobs report, which may provide clues on the timing of the Fed's stimulus cuts.
Foreign institutional investors purchased a net Rs 1,151.51 crore of stocks yesterday, according to provisional data from the stock exchanges. They have bought USD 17.7 billion of equities this year, with USD 1.1 billion in November alone.
Of the 30 Sensex shares, 22 closed higher and eight declined. The power sector index gained the most on the BSE, moving up 2.27 per cent, followed by the consumer durables index, which rose 1.24 per cent.
The major Sensex gainers were Tata Power, Coal India, NTPC, Hero MotoCorp, ONGC, Larsen & Toubro, ITC, Sesa Sterlite, Bajaj Auto and Sun Pharma.