matching a top score (of 3, fewest attempts) in my current project recently yielded intriguing results where i expected the .InsertSorted(Score) to be the first of any that matched but was not:

+ Code SnippetFunction AddScore()
ThisScore as ScoreData
ThisScore.Attempts = Attempts
ThisScore.Date$ = GetCurrentDate()
Scores.InsertSorted(ThisScore)
While Scores.Length > 2
Scores.Remove()
EndWhile
Save()
EndFunction
running some initial tests with .InsertSorted(10) 10 times revealed the following behavior (@ nth time .InsertSorted):
(ascending evens followed by descending odds, then 0)

then, curious as to which index would be returned by .Find always returned
4.
full test code with .Find returning (roughly) "middle -1" behavior:
+ Code Snippet// Project: Sorted
// Created: 2023-04-12
// show all errors
SetErrorMode(2)
// set window properties
SetWindowTitle( "Sorted" )
SetWindowSize( 360,720, 0 )
SetWindowAllowResize( 1 ) // allow the user to resize the window
// set display properties
SetVirtualResolution( 360,720 ) // doesn't have to match the window
SetOrientationAllowed( 1, 1, 1, 1 ) // allow both portrait and landscape on mobile devices
SetSyncRate( 30, 0 ) // 30fps instead of 60 to save battery
SetScissor( 0,0,0,0 ) // use the maximum available screen space, no black borders
UseNewDefaultFonts( 1 ) // since version 2.0.22 we can use nicer default fonts
SetPrintSize(24)
CenterWindow()
Type Score
Value
NUM
SPR
EndType
GLOBAL Mode$, Target, Scores as Score []
Mode$ = ".Sort"
Fill()
do
Print(Mode$)
If GetPointerPressed() then Fill()
For x = 0 to Scores.Length
Print( STR(Scores[x].Value) + " @ " + STR(Scores[x].NUM) )
Next x
Print(CHR(10)+".Find = " + STR(Target))
For x = 0 to Scores.Length
Print( Scores.Find(Target) )
next x
Sync()
loop
Function Fill()
Empty()
ThisScore as Score
If Mode$ = ".InsertSorted"
Target = 10
For x = 0 to 9
ThisScore.Value = 10
ThisScore.Num = x
Scores.InsertSorted(ThisScore)
Next x
Else
Target=2
For x = 0 to 9
ThisScore.Value = Random(1,2)
ThisScore.Num = x
Scores.Insert(ThisScore)
Next x
Scores.Sort()
EndIf
For x = 0 to Scores.Length
ThisSPR = CreateSprite(0)
SetSpriteSize(ThisSPR,10,1)
Scores[x].SPR = ThisSPR
SetSpritePosition(ThisSPR,100+(x*10), 100-(Scores[x].NUM))
Next x
EndFunction
Function Empty()
If Mode$ = ".InsertSorted" then Mode$ = ".Sort" else Mode$ = ".InsertSorted"
For x = Scores.Length to 0 Step -1
DeleteSprite(Scores[x].SPR)
Scores.Remove(x)
Next x
EndFunction
Function CenterWindow()
X = GetMaxDeviceWidth()/2.0 - GetWindowWidth()/2.0
Y = GetMaxDeviceHeight()/2.0 - GetWindowHeight()/2.0
SetWindowPosition( X,Y)
EndFunction
note the 2 Modes$ with Mode 2 order returning ascending indices presumably because they were .Insert'd in that order.
ie, reversing the .insert, the 2 sets (1 and 2):
+ Code Snippet Target=2
For x = 9 to 0 Step -1
ThisScore.Value = Random(1,2)
ThisScore.Num = x
Scores.Insert(ThisScore)
Next x
Scores.Sort()

point: this was unexpected for me while
the docs never did state that .InsertSorted would set it to the top of same values nor does it state that .Find would find the
first instance of the value.
the current functionality is still valuable in .find being lightning fast vs our own custom functions but users need to know what the results actually mean.
meanwhile , my
desired (formerly anticipated) behavior will need to be accounted for manually. i can see using .find as a jump start then crawling up from there (which i think i do
HERE tho saves are currently broken, it seems), for example.
finally, any related issues such as
THIS need to be further explored with this new-found insight while feature requests such as .FindNext() that would rely upon the current .InsertSorted/.find behavior would be affected/should be considered.
IndexOf may also be affected?
please post any additional test code that might reveal additional insight.