That is quite usual. Speedos are designed to ensure that they will never show a speed that is slower than your actual speed.
There is a manufacturing tolerance and there is the effect of the change in diameter of the tyres as they wear down (about 2%) change, and the effect of tyres heating up and cooling down.
A speedometer will never say show that you are traveling at 70 mph when you are actually traveling at 71 mph. But it may say that you are traveling at 77mph when you are only traveling at 70.
At the time that I checked this out (2014) the tolerance for the speed shown by a speedometer was anywhere between the actual speed and 10% + 5mph. So at an actual speed of 70, the speedo could legally read any value between 70 and 82 mph. On average half of the speedos could therefore be reading above 76mph. A very few will be spot on with overinflated, hot tyres. (The bike travels further per revolution in this situation, and speedos are tested with hot, overinflated tyres).
The difference between the reading and true speed is never fixed at (say) 5mph. It varies with speed.
I used to get a mental calibration using the satnav. Open straight road, clear view of the sky, no heavy traffic or tall buildings. Tyres warmed up, Constant speed, straight road, Compare the satnav speed with the speedo and check that the satnav and the speedo are both reading a constant value. Mine would often read 76mph at a true 70mph. Sometimes it would read (say) 74.
You cannot rely on the satnav for an instant readout. It calculates the speed that you have been traveling over the last few seconds, it does not show the speed you are traveling now. Hence the need for a straight road and constant speed.
If you use a speedo healer, it will sometimes be showing a slower speed than you are traveling, and your mileage will be wrong.