Help with TList Sort - I'm doing something dumb

I hope I've cut out enough of the code to make it understable.
Problem is, that even though I don't have any syntax problems, I do a
real fast crash as soon as I hit the sort method.

The data which is in the TList looks fine.  I haven't used the sort
method before & I'm obviously doing something dumb. I don't have a
clue. Any ideas would be appreciated.

Code snipped follows:

.
.
.
type
 TListSortCompare = function(Item1, Item2: Pointer): Integer;

 PMatingPoolType = ^MatingPool;
 MatingPool = record
   pChromo: pChromoType; {defined elsewhere}
   sFitnessPercentage: Single;
   end;
var
   MatingPoolList :TList;
   myfn: TListSortCompare;
   pMatingPool: PMatingPoolType;

{these variables & procedures are actually in class TEP}
procedure TEP.CreateMatingPool();
begin
   {create and completely fill in MatingPoolList here.
    with items of pMatingPool.}
   MatingPoolList.Sort(myfn);
end;
{**********************************************************}
function myfn(Item1, Item2: Pointer): Integer;
var
   a, b : PMatingPoolType;
begin
   a := PMatingPoolType(Item1^);
   b := PMatingPoolType(Item2^);

   if (a^.sFitnessPercentage) < (b^.sFitnessPercentage)
      then myfn := -1
      else myfn := 1;
 end;

----------------------------------------------------------------------
Richard V. Downing              Work email: richard.down...@vsin.com
Senior Software Engineer        Home email: r...@mindspring.com
VideoConferencing Systems, Inc. Web: http://www.mindspring.com/~rvd
Norcross, Ga
------------ When surrounded by wolves 'tis best to howl -------------