Thanks to everyone for their help with finding the nearest point. I finally ended up using a function provided by David Haycraft. Because I was searching in feet across a short area, I had to modify the function slightly. First, I had to change all units to "ft". Second, in the strsql statement, I changed the str$ conversions to Format$ conversions. This was necessary to preserve the precision on my Lat/Lon coords. The modified function is below. It works wonderfully! Thanks again! Dietrich '--------------------------------------------------------- 'Function Nearest ' Returns the name of the closest object in a search table ' Input parameters ' strTable: name of open search table ' strTargetCol: name of column containing feature names ' fltXC,fltYC: Coordinates of where to center the search ' fltRadiusMin: the initial search radius in ft ' fltRadiusMax: the limiting search radius in ft ' Output parameters ' strItemName: Name of closest target feature ' fltDist: distance in ft to closest target feature ' fltXT,fltYT: centroid of closest target feature ' ' By: 'David M Haycraft 'Information Analysis Associates Pty Ltd '1 Cumming Place, Wanniassa, 2903 'Aust Capital Territory, Australia 'A MapInfo Technology Partner 'David M Haycraft [[EMAIL PROTECTED]] '---------------------------------------------------------- Function Nearest$ ( ByVal strTable as string, ByVal strTargetCol as string, ByVal fltXC As Float, ByVal fltYC As Float,ByVal fltRadiusMin As Float, ByVal fltRadiusMax As Float, strItemName As String, fltDist as float, fltXT as float, fltYT as float) As Logical Dim fltRadius as Float Dim fltTemp As Float Dim strSql as string Dim n as integer Dim aliCol as alias ' init set distance units "ft" Set Format NUMBER "9,999.9" fltRadius=fltRadiusMin ' build ID col ref aliCol="~temp."+strTargetCol ' Select all of the objects within fltRadius ft of fltXC,fltYC ' If there's nothing there, then double the radius and try again. ' Repeat until something is found, or radius exceeds limit n=0 while (n=0) and (fltRadius<=fltRadiusMax) ' create and execute sql statement to search within a circular buffer region strSql="Select * from " + strTable + " Into ~temp NoSelect " + "Where " + strTable +".Obj Within CreateCircle(" + Format$(fltXC,"###.######")+","+Format$(fltYC,"###.######")+","+str$(fltRadi us)+") " Note "strsql = " + strsql run command strSql ' get size of result set n=TableInfo(~temp,TAB_INFO_NROWS) if n=0 then ' nothing selected - double the radius for the next search fltRadius = fltRadius * 2 end if wend ' Test to see if there was anything selected If n = 0 Then Nearest$ = False Exit Function End If ' Find closest feature in selection collection fltDist=Distance(0,0,180,0,"ft") Fetch first from ~temp while not EOT(~temp) ' get the distance to the selected object fltTemp = Distance(fltXC, fltYC, CentroidX(~temp.obj), CentroidY(~temp.obj),"ft") ' is this closest so far? If (fltTemp < fltDist) Then ' replace feature details fltDist = fltTemp strItemName = aliCol fltXT=CentroidX(~temp.obj) fltYT=CentroidY(~temp.obj) End If fetch next from ~temp wend 'close table ~temp ' return success Nearest$ = True End Function '--------------------------------------------------------- Dietrich Kastens (785)843-7789 Home (785)626-4600 Mobile [EMAIL PROTECTED] www.kastensinc.com _______________________________________________________________________ List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, send e-mail to [EMAIL PROTECTED] and put "unsubscribe MapInfo-L" in the message body.