Sorry to reply to this, can't seem to edit my post but I wanted to mark this as "Solved" and say what fixed it so if anyone else uses simulink for something like this.
Answer: I'm using simulink in "Frame Based" mode. So Simulink will break data up into "arrays" of data MxN long where M is the frame size per time step. Problem is every filter that is used causes some amount of group delay (FIR are easiest to use since their in samples is GD = 1/2*filter order. So when a filter is used or some sort of delay part of Frame1 will be delayed into Frame2. When the demodulator goes to decode this incoming data at the receiver end the frames that are being demodulated get messed up. Then you get results like I have. So you need to add delay equal to the frame size minus the total group delay from the modulator to demodulator.
For Example, say frame size is 100 samples long per simulink time step and you use an Interpolation filter and then a decimator filter with and order of 20 each. The total group delay from the modulator to demodulator is going to be 1/2*20 + 1/2*20 = 20 samples. So to "synchronize" the data in correct frames again you will need to add enough delay equal to FrameSize - 20 sample. So you need to place a 80 sample delay block to get the all the correct frame data in the same frames as was modulated.
Hopefully this makes sense and I explained it well. It's working beautifully now after figuring this out!!!