Gyro questions numbers not staying steady at stand still
I am using a Parallax L3G4200D 3 axis Gyro. 


Don't you mean a STMicroelectronics gyroscope? Right.


  When a gyro is left on a flat surface with nothing interacting with it at all the outputs from it should all be “0″ correct? Mine is jumping around between numbers. 


No, they are supposed to output values, which vary from part to part and its distribution is approximate to a Gaussian curve (less frequent-most frequent- less frequent histogram shape). You need to take an average of these values (offset) and then always subtract from the value you read each time in order to use it (so the most frequent value is closer to zero).

vale = value - offset;



  For example “X_L = 0″ and “X_H = 17219″ with a “delay(500)” between refresh the X_H will jump around while X_L stays pretty much at 0 but will occasionally jump very high. 


Is it possible that you are inverting the order of the bytes? The low byte represents the most sensitive readings.


  Do you think this is a problem with the sensor or something code related? If I pick up the Gyro and shake it around all of the numbers start updating like its functioning correctly.


Not exactly, I would assume, since the values you read at idle state are just intrinsic noise. 

Wire.beginTransmission(0x69);
Wire.write(0xA8);
Wire.endTransmission();
Wire.requestFrom(0x69, 6);
while (Wire.available() &lt; 6); //you need to wait for the date to be ready
low   = Wire.read();
high  = Wire.read();
X  = ((high &lt;&lt; 8) | low);     //you need to read the 3 registers 1 by 1   

low   = Wire.read();
high  = Wire.read();
Y  = ((high &lt;&lt; 8) | low);

low   = Wire.read(); 
high  = Wire.read();
Z  = ((high &lt;&lt; 8) | low);


X -= &lt;offset here&gt;;           //you need to take average (offset) and subtract
y -= &lt;offset here&gt;;
Z -= &lt;offset here&gt;;


Only then you can actually start using the values. They are still in 2 complements (MSB is sign bit) and they are not yet in degrees per second (dps). Each value you have to multiply by a constant (sensitivity). This constant varies with the measurement range. If it is 500 dps, then the constant is 0.0175.

Xdps = X*0.0175;


You might be interested in calculating the angle, then you have to integrate the angular speed. If the loop time for reading is 1ms, then multiply Xdps by 0.001.

Xdps = X*0.0175*0.001; 


Due to lack of timing precision, the gyro will drift with time. It will never go back to zero angle if you bring it physically to the zero position, but it will keep an offset. You need to fuse accelerometer to kill this offset. 

But you still (probably) need to filter the values:

Xflt = Xflt*0.9 + Xdps*0.1;


This will make sure that only considerable variation in magnitude of Xdps will actually affect the final value Xflt (i.e. it suppresses noise values).