# Finding the phase and frequency of a tone with Doppler. What is wrong in the code?

I am trying to find the phase and frequency of a single tone having a small Doppler (10 Hz). I have the following code. The integration time for the operation (the length of the time vector) is defined in the code. It works if the integration time is a correct multiple otherwise not. Why is this failing?

Here is the code:

clearvars; close all; clc;

Fc = 10.005e3;
Fd = 10; % random doppler
Fc2 = Fc+Fd;
disp(['True Freq: ',num2str(Fc2),' Phi: ',num2str(rad2deg(phi))]);
Fs = 1e6;      % Max. Sampling Freq allowed
Ts = 1/Fs;     % Sampling interval
T_intg = 1.2347e-3; % Max. Integration time allowed

t  = 0:Ts:T_intg;                        % Time Vector
s  = exp(1j*(t*2*pi*Fc2+phi));           % Signal Vector

Fs = 1/Ts;                               % Sampling Frequency
Fn = Fs/2;                               % Nyquist Frequency
L  = length(s);

fts = fft(s, L)/L;                       % Normalised Fourier Transform
Fv = linspace(0, 1, fix(L/2)+1)*Fn;      % Frequency Vector
Iv = 1:length(Fv);                       % Index Vector

amp_fts = abs(fts(Iv))*2;                % Spectrum Amplitude
phs_fts = angle(fts(Iv));                % Spectrum Phase

[val, index] = max(amp_fts);             % locating the peak in the spectrum
rad2deg(angle(fts(index)))                % this gives 104 instead of 37 degrees