Please check out the new version of TChartAxis.GetIndexOfFirst/LastVisibleAxisMark in the Laz/main repository. The issue was that the indices were searched by conversion of the label values from graph to image coordinates, but this is correct only when no axis transform is involved because label values always are in axis coordinates - the conversion from axis to graph coordinates was missing in my old code. The full combination of all involved axis transformations, in the correct order, can be found from the GetTransform method of the axis.
In the attachment you can find a small project which combines a logarithmic and a linear (inverting) axis transformation (it works correctly only with the new TAChart revision).