I don't think it's ever a good idea to accommodate clipping. If you reduce the amplitude of the original harmonics it sounds better.
iamp = p5*.5
ifreq = p4
asig poscil iamp, ifreq, p6
outs asig, asig
I still hear a slight difference, but I think it may be psychological as I've been listening too long for differences! When I do an FFT of the two tones they look identical.
There may be some rounding errors taking in place somewhere, and the amplitude of the second tone is not quite right, that would need looking at. Back to your question, if you need control over each partial's amplitude phase or frequency, it's probably best to use a bank of oscillators. Otherwise use a function table that combines partials for you.