HMC6352 wire.receive vs wire.read

I had a Parallax HMC6352 compass module on a robot project and had the whole thing working sweet a couple of years ago. I have since taken the module to a new project and using the 1.0 wire library, Wire.read. Something seems to have caused issues. The compass is working, putting out data that is repeatable, but is certainly not in 10ths of degrees anymore. Plotting the data out as I rotate the compass, it comes as a weird truncated, stretched sine wave!!! I have done a little math with it, turning it into a smooth SIne wave. Doing an asin on that gives me fairly good data I can use, but not what I want! I think there is something going on with 7 bits vs 8 but I am not savvy enough to unravel the mystery. Here is the old code that worked just fine, now Heading makes no sense, maybe I am getting Magnetometer data instead? The module partly fried maybe, only one mag coming through? I am at a loss. Please HELP!!!

#include <Wire.h>

//constants
#define HMC6352Address 0x42
#define slaveAddress  HMC6352Address >> 1

...

byte headingData[2];
int Heading;
...

void GetHeading(void){
  Wire.beginTransmission(slaveAddress);
  Wire.send("A");       
  Wire.endTransmission();
  delay(7);
  Wire.requestFrom(slaveAddress, 2);
  int i = 0;
  while(Wire.available() && i < 2)
  { 
    headingData[i] = Wire.receive();
    i++;
  }
  Heading = headingData[0]*256 + headingData[1]; 
}

I copied the code, with the new wire commands.

Here is the new heading calculations, which give me two quadrants of smooth data that I should be able to calibrate.

...
float Heading;
...
 Heading = (headingData[0]*256 + headingData[1])-1072; 
  if (Heading<-48) Heading=Heading+256;
  Heading= (asin( (Heading/160))*100);