IM_PriceCode_svc rounds DiscountMarkup# values incorrectly in a script

Customer is running v2014 Advanced, PU4.

I have a SO Detail pre-write script that needs to look up customer specific pricing directly (so CalculateItemPrice() is not an option), and when I do a GetValue on the DiscountMarkup1 column, it is rounding the price to one decimal place (eg. 0.0972 becomes 0.1) which breaks the script function I'm trying to build.

sCustNo = ""
sDivNo = ""
sItemCode = ""
oPriceCode = oSession.GetObject("IM_PriceCode_svc")
if oPriceCode <> 0 then
    Set oPriceCode = oSession.AsObject(oPriceCode)
end if
retVal = oHeaderObj.GetValue("CustomerNo$", sCustNo)
retVal = oHeaderObj.GetValue("ARDivisionNo$", sDivNo)
retVal = oBusObj.GetValue("ItemCode$", sItemCode)
sLookupKey = sDivNo & sCustNo & String(20-Len(sCustNo),Chr(0)) & sItemCode
retVal = oPriceCode.SetBrowseIndex("KCUSTOMER","")
retVal = oPriceCode.SetBrowseFilter(sLookupKey)
retFound = oPriceCode.MoveFirst()
' plus some code here to make sure I find a valid price override record for that customer / item... which doesn't matter for this problem.
nCustPrice1 = 0.0000
retVal = oPriceCode.GetValue("DiscountMarkup1", nCustPrice1)
retVal = oSession.AsObject(oSession.UI).MessageBox("CustPrice1: " & cstr(nCustPrice1)) 'and this value is rounded...

The company setting for pricing decimal precision is set to 4 (CI Options).  The custom pricing works, and I've used DFDM to verify the value is stored as 0.0972 in the IM_PriceCode table, but it comes out of the GetValue as 0.1

Any ideas?  When I try the above code on ABC data (3 decimal precision) it still truncates, but to two decimal places, which I find extremely odd.  There seems to be something wrong with this behavior, but I can't think of where to look next.