Sorry, I don't understand what you want to achieve. Force the axis to begin and end at a given value and to place the first/last labels immediately at the begin/end of the axis? In this case the axis limits must be input by the user, and I don't see a problem to subtract/add an epsilon. Here is an example in which the user can enter the axis limit in edit controls:
uses
TAChartUtils;
procedure TForm1.Button1Click(Sender: TObject);
const
EPS = 1E-9;
var
ext: TDoubleRect;
begin
ext.a.x := StrToFloat(EditXMin.Text) - EPS;
ext.b.x := StrToFloat(EditXMax.Text) + EPS;
ext.a.y := StrToFloat(EditYMin.Text) - EPS;
ext.b.y := StrToFloat(EditYMax.Text) + EPS;
Chart1.Extent.FixTo(ext);
end;
But this works only when the first and/or last labels are integer multiples of the interval length that the chart determines. Suppose the user wants the axis to begin at 0 and to end at 0.39. Then the final label will not be drawn when the interval length is determined to be 0.02, 0.05, 0.1, for example.
Automatic labeling is very complex, and will probably fail if you have certain restrictions in mind. In this case, calculate the labels yourself and store them in a ChartListSource which you attach to the Marks.Source of the axis.