Couple of things, Chris. First off, degrees of rotation are measured at the crank, and since a 4-stroke cam has to turn at 1/2 crank speed, 5* at the camshaft=10* of crank rotation. 1 tooth on the camshaft sprocket=20* of crank rotation.
Deck height would have to change quite a lot to cause 10* of error. A few things to check: Is a gasket in place at the cylinder base? Do the cylinder top and/or head show signs of having been milled? Is the head gasket thickness .043" or greater?
An inspection of static compression ratio will tell you if the PO monkeyed with deck height. You'll need a degree wheel, a very small funnel, a graduated cylinder, and a dosage measuring vial from the drug store. Pull the engine and block it up on the bench so that a spark plug hole is perpendicular to the ground (straight up and down). That's important--air must be able to escape, and oil must be able to fill the head completely. Lock the crank with the pistons at TDC and valves closed on the cylinder you're inspecting. Loosen the valve adjusters all the way. Add motor oil until it fills the head right up to the bottom of the spark plug threads and no higher, recording the volume of oil you've poured in. Call that number "H."
Rotate the crank 180* CCW through the power stroke to BDC (bottom dead center). As before, add oil until the level reaches the bottom of the plug threads, recording the amount of added oil. Call this number "C."
Use this formula to determine static CR: CR=(H+C)/H; in other words, the total volume of head plus cylinder divided by the volume of the head. An unmodified XS650 motor should show a static CR between 8.4 and 8.6.