Just noticed something else - although you can save 20p by buying a return from Melksham instead of Chippenham to get from CPM» to Bristol Temple Meads, if you try the same trick to get from CPM to Bath Spa (the stop before BRI» ), you end up paying an extra £1.60! (£10 vs. £8.40)
Is there some logic there?
Yes, but I would hate to try to fully explain it. I believe that there are local fares within a very short distance, and longer distance fares that cluster stations together. There is a futher break point as you move from regional to long distance fares and routings, and you get oddities at each interface between schemes.
Another well known one from Melksham is that the is no ticket sold from Melksham to Bristol Parkway if you wish to travel via Swindon and Badminton (usually the fastest route), but if you buy a Melksham to Severn Tunnel Junction ticket, that IS valid via Swindon, Badminton and Bristol Parkway, where you are welcome to leave the train early.