Do some testing but my guess is the distinctcount of the @FY is the culprit. It is probably only about 5 based on your sample data. My guess is you may need another formula to get the correct distinct count of FY. You don't really want a count, you want a distinct count per student, correct? Therefore you cannot just use count or distinct count on that field. YOu will need to add the student (or student ID if there is one so you do not run into same name problems) and the FY together and do a distinct count on this formula field.
Something like :
{table.FY_field} + " - " + totext({table.student_id_field}),0,"")
From there you can divide it by the distinctcount of the student (preferable ID#).
Set up two seperate fields to get your counts so you can test them. From there you can tweak them independently and then use them together for the average (divide by).
Also if you do end up grouping on the stsudent name I almost always use a formula field for this instead of the actual name (I have an ID # associated to names in my primary DB). THis way you never accidently group two different people into one place. Something like:
{table.Namefield} + " (" + totext({table.idfield}),0,"") + ")"
If you want to hide the ID field still use this to group, suppress the group name and drop the name field into the header. It still keeps them seperate but hides the ID.