I think you are partially correct, but here's the way we look at these and we make markets in many of these products.
There's a concept called "arbitrage-free pricing". Essentially there should no way to trade both sides of this and to make risk-free money.
So let's take the front month gold contract, the June (GCM6). The first delivery date for it is June 1st. The last delivery date is near the end of the month, probably about the 28th. The price of spot gold is 1300/oz. (I'm estimating since I'm not logged into bberg now).
If I buy the contract and sell you spot gold now I will be perfectly hedged. What does it cost me to repo that gold from now until delivery? Sometimes it might work out that everyone is long gold and they are looking to lend it so I might want to borrow to the last delivery day and get paid as much as I can. In that case the contract will trade at a premium since I'm going to get paid to borrow the collateral.
Now in the case of most contracts, the seller gets to decide when to deliver. So the optimal thing to do for the seller will actually be to deliver right away, even though I, as buyer wish that he wouldn't.
The pricing difference between the spot and the contract will reflect the cost of financing to collateral for the best scenario for the contract seller. In our case, let's say the anual rate is 5%. Let's say it's 15 days until earliest delivery. So the financing cost will be 1300 * .05 *15/360=\$2.71. That's what the holder of the collateral is paying to finance it. The correct price then would be 1302.71.
In the real world no one is going to put on an arbitrage trade for a few cents, so it will trade in a band. But the main take away that you should have is that the difference between spot and the future is what it costs to hold the collateral.
Look at natural gas contracts. They get very steep sometimes with an implied rate over 10% sometimes because it's really hard to store natural gas when there is too much of it. (And you bleed some out in storage also).
I hope that's helpful.