function [FWHMdat, err, TESTRUN] = FWHM_Calculation(Isum,wav, TESTRUN)

global DEBUG

err = 'ok';

[m, ~] = max(Isum);		%	Find maximum value and index
mini = min(Isum);
if mini < 0,
    mini = 0;
end

ind = find(Isum>=mini+(m-mini)/2);	%	Find indicies where I>=max(I)/2
nl = min(ind);			%	Leftmost index
nr = max(ind);			%	Rightmost index

dips = find(Isum(nl:nr)<=mini+(m-mini)/2);
%disp(dips);
if numel(dips)> 100
	err = 'Uncontinuous spectrum!';
	%TESTRUN = true;
end


wavl =  wav(nl); %left position @ FWFM
wavr =  wav(nr); %right position @ FWFM

FWHM = abs(wavr-wavl);                                              %absolute width
bandwidth=2*FWHM/(wavr+wavl); %relative width                      %relative bandwidth /R
FWHM_f=abs(6e17*pi/wavl-6e17*pi/wavr);                             %FWHM ín frequency instead wavelength

%cprintf([1,0.5,0],' Evaluated wavelength FWHM = %.3f nm = %.0e sec^(-1) (%.2f%%)\n',FWHM,FWHMw,100*bandwidth);

% disp(['Evaluated wavelength FWHM = ',num2str(FWHM),'nm'] )
% disp(['Evaluated frequency FWHM = ',num2str(FWHM_f),'1/s'] )
% disp(['Evaluated bandwidth of FWHM = ',num2str(100*bandwidth),'%'] )

if TESTRUN %For faked inputs
	nl = 100;
	nr = 500;
	wavl = wav(nl);
	wavr = wav(nr);
	FWHM = abs(wavr-wavl);                                              %absolute width
	bandwidth=2*FWHM/(wavr+wavl); %relative width                      %relative bandwidth /R
	FWHM_f=abs(6e17*pi/wavl-6e17*pi/wavr);                             %FWHM ín frequency instead wavelength
end

UsedSpectrum = [zeros(nl -1 ,1);Isum(nl:nr,1);zeros((length(Isum)-nr),1)];

FWHMdat  = struct('FWHM',FWHM,'bandwidth',bandwidth,'FWHM_f',FWHM_f,'wavl',wavl,'wavr',wavr,'nr',nr,'nl',nl,'UsedSpectrum',UsedSpectrum);

if DEBUG==5, fprintf('FWHM width: %f Left index: %f Right Index: %f', FWHM, nl,nr), end

end