Hola QuieroC:
No he detallado muy bien tu programa, pero veo un detalle que atrae mi atención:
Tu haces múltiples fgets, debes tener en cuenta que por cada fgets, la cabeza del archivo se desplaza a la siguiente línea dentro del archivo, luego si tienes 3 registros, en los tres primeros fgets, ya los recorristes todos. Te recomiendo hacer un fgets a una cadena auxiliar y luego procesar desde allí toda la información. Aunque lo mejor que debes hacer es utilizar el mismo registro para leer y escribir en el archivo utilizando fread para leer y fwrite para escribir.
Si no te es claro lo que te aconsejo, dimelo y ampliare mi ayuda.
gmantil