A colleague had a proc summary where a total count of positive and negative counts was zero on the data sheet in EG. The data manually pointed to a net result of zero. The total became a denominator in a percentage calculation and the business rule was to use the usual formula when the total was positive, a flag value when negative and a different flag value when it was zero. She used a SELECT and the negative flag value was produced instead of the zero flag value. We expanded the when (value < 0) statement out and putlog in each case printed zero using n=. The variable summed positive and negative whole numbers so floating point shouldn't have been a problem but tried k=fuzz(n) an putting y= and still got zero. Did an x=put(n, E12.) and putlog x= gave a left adjusted '0'. All this was in the do;...end; following the test on being less than zero.
I recall seeing reference to -0 being produced by proc summary and being displayed as '0' but taken to be less than plain vanilla 0 in SAS. I can't help wondering if this is such a case.