in PndEmc there is the definition of fDetectorID:
fVolumeID = nMod*100000000 + nRow*1000000 + copyNo*10000 + nCrys;
the crystals are divided in GetCrystal and GetRow (like theta and phi, or x and y), then 10000 is correct.
About the second question, with the endcaps the structure was changed many times since when I have written the code for the first time, it is possible that for some module the propagation of fDetectorID is wrong (crystals and row should be always positive).
Could you please check for which modules you have such negative numbers?