-- Note: the Int64/Integer is interpreted literally here,
-- and no account of the implicit scaling that CURRENCY 
-- does is taken into account. ToDo: fix.
inCurrency :: ArgIn Currency
inCurrency f  = 
   let
    (hi,lo) = f `divMod` (fromIntegral (maxBound :: Int) + 1)
   in
   writeVarCurrency (fromIntegral (fromIntegral hi)) (fromIntegral (fromIntegral lo))
inCurrency :: ArgIn Currency
inCurrency f  = 
   let
    (hi,lo) = f `divMod` (fromIntegral (maxBound :: Int) + 1)
   in
   writeVarCurrency (fromIntegral (fromIntegral hi)) (fromIntegral (fromIntegral lo))
inCurrency f  = 
   let
    (hi,lo) = f `divMod` (fromIntegral (maxBound :: Int) + 1)
   in
   writeVarCurrency (fromIntegral (fromIntegral hi)) (fromIntegral (fromIntegral lo))