Yes theoretically since cost of carry is positive futures should be more than spot.
But there are times when the sentiment for a stock/index turns bearish, that is people feel that the prices in future will be lesser than the current market price. This is what gets factored in, and you see the futures see at discounted price.
Another reason that happens sometime is when dividends are declared, if the future contracts are expiring after the ex date, then future will also trade at a discount to the extent of the dividend declared. The reason being, the holder of the stock gets dividend and not the person holding the future. The day the stock goes ex, the stock price drops to the extent of the dividend but futures doesn’t.