HMC5883L magnetometer garbage values

I recently picked up a hmc5883L for experimenting with.
The board puts out garbage numbers like this. From serial monitor. Same output trying a few different libraries and example sketches.

Raw:	-9   -5   0   	Scaled:	-8.28   -4.60   0.00   	Heading:	3.69 Radians   	211.67 Degrees   	
Raw:	-10   -5   0   	Scaled:	-9.20   -4.60   0.00   	Heading:	3.65 Radians   	209.18 Degrees   	
Raw:	-9   -6   0   	Scaled:	-8.28   -5.52   0.00   	Heading:	3.78 Radians   	216.31 Degrees   	
Raw:	-10   -5   0   	Scaled:	-9.20   -4.60   0.00   	Heading:	3.65 Radians   	209.18 Degrees   	
Raw:	-9   -5   -1   	Scaled:	-8.28   -4.60   -0.92   	Heading:	3.69 Radians   	211.67 Degrees   	
Raw:	-8   -5   0   	Scaled:	-7.36   -4.60   0.00   	Heading:	3.75 Radians   	214.62 Degrees   	
Raw:	-9   -5   0   	Scaled:	-8.28   -4.60   0.92   	Heading:	3.69 Radians   	211.67 Degrees   	
Raw:	-10   -6   0   	Scaled:	-9.20   -5.52   0.00   	Heading:	3.73 Radians   	213.58 Degrees   	
Raw:	-9   -5   0   	Scaled:	-8.28   -5.52   0.00   	Heading:	3.78 Radians   	216.31 Degrees   	
Raw:	-9   -6   0   	Scaled:	-8.28   -5.52   0.00   	Heading:	3.78 Radians   	216.31 Degrees   	
Raw:	-10   -5   0   	Scaled:	-9.20   -4.60   0.00   	Heading:	3.65 Radians   	209.18 Degrees   	
Raw:	-9   -5   0   	Scaled:	-8.28   -4.60   0.00   	Heading:	3.69 Radians   	211.67 Degrees   	
Raw:	-9   -5   -1   	Scaled:	-8.28   -5.52   0.00   	Heading:	3.78 Radians   	216.31 Degrees

This is what it displays regardless of orientation. Over and over again. i2c is working with other breakout sensors. If i2c connection is broken by removing either sda or scl the numbers become fixed ( and completely different). It seems communication is working normally with the chip but its putting out junk. Chip is detected with proper address using i2c scanner. I don’t have another magnetometer to try right now, is there any diagnostic for this chip or has anyone seen this before? Any help would be appreciated.

The breakout board has a 3.3 volt regulator and 4.7K pullups on sda scl on board so i am connecting it directly to arduino with no additional external components.

Which breakout board?

Study the data sheet. There are identification registers that you can read (addresses 10-12) and a self test that you can activate.

OK, so i read the identification registers and they return the same values as the datasheet. The status register returns the correct bit values for lock and ready. Running in self test mode gives me the same result as my previous readings. The bias field does not affect the output raw reading so the test is a big fail.

I have changed gain settings up and down but to no avail. Unfortunately i may have a bum chip ( or breakout) . Seems to work just fine for everything except detecting mag fields. Seems pretty basic from the datasheet, i wish i had another unit to try. I'll let you know in a month when a new one arrives.

The unit was a cheapo one from ebay (probably a mistake).