Regarding IPN - you're right. However IPN return address can be set in PayPal or dynamically from nop code. Nop code doesn't set it. I my case where I have more than one store using same paypal account, the IPN goes to the wrong place. I think it can be set as follows:
string returnUrl = _webHelper.GetStoreLocation(false) + "Plugins/PaymentPayPalStandard/PDTHandler";
string cancelReturnUrl = _webHelper.GetStoreLocation(false) + "Plugins/PaymentPayPalStandard/CancelOrder";
string ipn_url = _webHelper.GetStoreLocation(false) + "Plugins/PaymentPayPalStandard/IPNHandler"; //IPN - instant payment notification
builder.AppendFormat("&return={0}&cancel_return={1}¬ify_url={2}", HttpUtility.UrlEncode(returnUrl), HttpUtility.UrlEncode(cancelReturnUrl), HttpUtility.UrlEncode(ipn_url));
Disclaimer: I waiting for next order to come to see if it will work as I think it will.
Filip
PS. Please PM me your email so that I can send you some screenshots related to the rounding error.