I intended to post this long ago, sorry for the delay. There is a small bug in 3dretroicor in that it can leave some residual covariance with the noise model after running it. If you try re-running 3dretroicor on the cleaned dataset a second time with the same pulse and respiration files as input, the output will change further, and iterating retroicor will never converge. The reason is cardiac and respiration are fitted separately to the voxel timecourse, and then removed one at a time, re-introducing covariance with regressor1 when regressor2 is subtracted.
A work-around is to use 3dretroicor to detect physiologic phase (using -cardphase and -respphase to store as files) and using sines and cosines of those phases as input to a GLM. It is a relatively small issue but there may be studies with more than expected covariance between cardiac and respiration (there is some interaction between them). If you're doing physiologic modeling with RVT and CVT or other, it is better to do those noise regressions all at once anyways, so the variance is appropriately parcelled out to each regressor (lund 2006).