I have also come across the challenge of trying to calculate the Price for a bond with a negative yield.
For example, the price for the current German 5-year government bond was 97,782 with a yield of 0,45%.
=PRICE(DATE(2022,4,18),DATE(2027,4,16),0,0.0045,100,1,1)
Now I would like to calculate the price if the yield where to drop by 50 basis points:
=PRICE(DATE(2022,4,18),DATE(2027,4,16),0,-0.0005,100,1,1)
As expected I get an error (#NUM!).
Any ideas on how to get the price?