A typical gas sales agreement, also called a gas swing contract, is an agreement between a supplier and a purchaser for the delivery of variable daily quantities of gas, between specified minimum and maximum daily limits, over a certain number of years at a strike price. The main constraint of such an agreement that makes them difficult to value is that there is a minimum volume of gas (termed the take-or-pay or minimum bill) for which the buyer will be charged at the end of the year (or penalty date), regardless of the actual quantity of gas taken. We propose a framework for pricing such swing contracts where both the gas price and strike price (an index) are stochastic processes. With the help of a two-dimensional trinomial tree, we are able to price such swing contracts with both so-called make-up and carry-forward provisions; find optimal daily decisions and optimal yearly usage of both the make-up bank and the carry-forward bank. With the help of a number of numerical examples, we also provide a detailed analysis, not only of the different features these contracts have, but also how different model parameters will affect both the optimal value and the optimal decisions