What you hare experiencing is called round off and results from Excel (and most other math apps) storing decimal number in binary format with a fixed number of bytes. This results in some decimals numbers not having exact binary representation. So we can get small numbers like 0.00000000000000577 showing up when zero is expected. Nothing to do with negative numbers.
Rounding to say 12 decimal places will overcome this.
Workaround: replace your formulae =H2+$P$3 by =ROUND(H2+$P$3,12)
best wishes
For more details:
Chip's clear explanation
http://www.cpearson.com/excel/rounding.htm
Floating-point arithmetic may give inaccurate results in Excel http://support.microsoft.com/kb/78113/en-us
(Complete) Tutorial to Understand IEEE Floating-Point Errors http://support.microsoft.com/kb/42980
Understanding Floating Point Precision, aka “Why does Excel Give Me Seemingly Wrong Answers?”
What Every Computer Scientist Should Know About Floating Point
http://docs.sun.com/source/806-3568/ncg\_goldberg.html
Visual Basic and Arithmetic Precision
Good reading from T Valko
Others: