I was hoping to spare you the gory details, but...
This is coming from a proprietary closed platform called "Flex/OS" by IBM which is a stripped down OS/2 for retail registers running on x86 pc's. I have no choice in how the data is packed. I believe the application treats everything as strings or numbers. I cracked IBM's infamous "packed decimal compressed transaction logs" with an elaborate perl program (which works better than several other expensive commercial programs we have seen). All the data fields in this file are either ascii or packed decimal. Perhaps they chose wrong in deciding to pack a negative number, I was just hoping to find someway to unpack it correctly. Sadly, there are other fields which are correctly unpacked as "d1".