I would be interested to hear more information about what your inputs are, and what you mean by "added a bias by summing". If you really just added some simple term (without cheating by looking at actuals), and your metric improved, then there should be a way to improve the model, maybe by adding complexity.
However, the behavior you see might just be unavoidable due to natural noise in the output variable. Imagine you are predicting height from age and gender. Then there is going to be some natural variation in height above what can be described by those simple inputs. So all the super tall people are going to be underestimated, and all the super short people are going to be overestimated.
In other words, you can't correct for this because real value is not an input the model can see. Try plotting the residual error against each of your inputs on the x-axis one at a time. If you see similar weak points or biases in these plots, then there could be an opportunity to fix things.