As per my understanding party A should get billed incase the call is routed internally in the VPLMN of Called party(HPLMN of calling party). This is so because the call will be treated as a local call.
Roameo, referring to the solution of a dummy HLR in VPLMN, the problem is the IMSI. HLR has to send IMSI in PRN. However in the VPLMN, the IMSI is stored only in the current MSC/VLR. The dummy HLR or even the actual HLR of the VPLMN doesnt have the IMSI of the inbound roamer and since IMSI is a mandatory parameter of PRN, I dont see how the dummy HLR can send it.
As for the alternate solution of obtaining the MSRN from HPLMN and then routing the call internally, wouldn’t that require code changes in the MSC? On the contrary the first solution may be achieved by modifying the routing tables of MSC (ofcourse a new dummy HLR would have to be added).
Do correct me if I am wrong.