By modelling duration and modified duration in Excel, I found that modified duration approximates bond price change well when there is a 1% increase in yield, while duration is a good approximation when there is a 1% decrease in yield. I checked this with about 10-15 couples of coupon rates and YTM, and it seems it works always. Is this true? If yes, what is the reason behind it?
Modified duration is the right concept to use to estimate change in price in response to an infinitesimal change in yield.
It works very well for a small change in yield (say a few basis points). However with a bigger yield change it gets less accurate, arguably with a 1% change in yield it is no longer satisfactory.
What to do? Modified duration is the first term in a Taylor series expansion. To increase accuracy you should use the second term also, known as Convexity.
Using Duration instead of Modified Duration may work to some extent as you say, but it has no sound theoretical justification. Duration is a number slightly larger than modified duration, so I can see that it makes the predicted price increase for a 1% yield drop a little bigger, but if the amount is just right that is more or less a coincidence. You are using the wrong method to reach an apparently good result.