Sorry, but you are overlooking the fact that 0845 is charged at the BT STANDARD LOCAL RATE and does NOT get discounted in the same way as ordinary land-line local calls, it is not usually included on 'free' local call packages, and in the case of my own landline which is supplied by Virgin, the standard local call rate is a lot cheaper than the standard BT rate....for this reason i pay more than the Virgin local rate for 0845's because they are set to the BT rate. The BT rate for all local calls is higher because most BT customers will be then on some sort of discount 'package' for ordinary landline numbers.
Hence the upspringing of the website "Say no to 0870".