Ivan55Не совсем понятно как у Вас сделано.
IMHO, входные отсчёты во буфере сдвига (символьном) должны двигаться всегда на одинаковое количество отсчётов.
А вот копировать из буфера нужно в демодулятор с границы интервала интегрирования.
Может возникнуть проблема из-за разности тактовых генераторов передатчика и приёмника, когда пики начнут плавно двигаться (появляться раньше относительно предыдущего или позже), но это отдельная тема.
Выделения границ интервала ортогональности лучше определять по нескольким символам. В простейшем случае обыкновенным усреднением.
Автокорреляционная функция, естественно, комплексная. И по ней можно отследить рассинхронизацию по частоте. Но только в достаточно узком диапазоне. Для увеличения диапазона и более быстрой подстройки систем АПЧ и АПТЧ используйте или пилоты (символы или каналы), или итеративную обработку (если целостность сообщения контролируется CRC).
Всё вышеизложенное - это только самые-самые основы. Дальше будет гораздо интереснее.

Вообще, литературы по OFDM - море.
Удачи.