What does class() of the audio data show? If it is one of the integer classes like uint16, then the fft will be type double and the ifft of that would be type double, not the original data type. When you have data of type double that is outside of the range -1 to +1 then if you use one of the audio file writers then the data will be clipped.
If this is what is happening to you, that your original data is outside of the range -1 to +1 then you should convert your ifft results to that data class before writing it out. For, uint16(results)