function FlushCalFile(filespec,nKeep)
% FlushCalFile([filespec],[nKeep])
%
% Flush all but the most recent calibrations in a file.
%
% If no filespec is given, flushes file default.mat.  If
% a an integer is given, flushes file screenN.mat.  If
% a string is given, loads from string.mat.
%
% Argument nKeep specifies how many calibrations to
% keep.  If fewer than nKeep are in the file, all are
% kept.  If nKeep is zero, file is emptied.  nKeep
% defaults to 1.
%
% If specified file cannot be found does nothing.
%
% 8/26/97  dhb  Wrote it.
% 8/21/00  dhb  Update for dual cal dir scheme.  Not tested hard.

% Set nKeep
if (nargin < 2 | isempty(nKeep))
	nKeep = 1;
end

% Set the filename
if (nargin < 1 | isempty(filespec))
	filename = [CalDataFolder 'default.mat'];
elseif (isstr(filespec))
	filename = [CalDataFolder filespec '.mat'];
else
	filename = [CalDataFolder sprintf('screen%d.mat',filespec)];
end

% Make sure file is present before calling load
file=fopen(filename);

% If not, make sure to try secondary directory.
if (file == -1 & (nargin < 3 | isempty(dir)))
	useDir = CalDataFolder(1);
	if (nargin < 1 | isempty(filespec))
		filename = [useDir 'default.mat'];
	elseif (isstr(filespec))
		filename = [useDir filespec '.mat'];
	else
		filename = [useDir sprintf('screen%d.mat',filespec)];
	end
	file = fopen(filename);
end

% Now read the sucker if it is there.
if (file ~= -1)
	fclose(file);
	eval(['load ' QuoteString(filename)])
	nCals = size(cals,2);
	cal = cals{nCals};
	if (nCals < nKeep)
		return;
	elseif (nKeep == 0)
		cals = {};
	elseif (nKeep == 1)
		cals = {cals{nCals}};
	else
		cals = {cals{nCals-nKeep+1:nCals}};
	end

	% Save the flushed calibration file
	eval(['save ' QuoteString(filename) ' cals']);
end
