I live in Malmesbury area code 01666 but VM has installed my phone and given me an 01793 Swindon number. These days when you call someone to order something for example, they can usually see your number and they don't believe I'm in Malmesbury!! I asked VM to change my number to an 01666 number but apparently it's impossible!!!
To use numbers allocated on the BT target exchange (in your case Malmesbury) Virgin has to have a direct interconnect between their regional cable headend & that exchange. Otherwise all incoming calls will have no routing onto VM's network & the call would fail to reach you. Therefore they have had to give you a number from the nearest one that is connected.
Cable customer since 1993. Services: FH TV, Sky Sports & Movies (2xV6), Talk Anytime Phone, VIVID 350, Virgin PAYG Mobile