Markets came off their day highs in closing trades, amid a weakening rupee, but ended marginally higher led by select rate-sensitives.
The 30-share Sensex ended up 58 points at 19,952 after hitting an intra-day high of 20,150 and the 50-share Nifty gained 10 points to end at 5,916 after touching a high of 5,982.