Why, if payrollTotals[1000] is of type float, are you looping on "fread(&payrollTotals[i], sizeof(int), 1, f)"?????
If you use SEEK_CURR rather than SEEK_SET, no need to keep track of the position using bP. Only need to account for the fact that fread() increases the file pointer (by the amount of data it reads).
Also, don't use magic values (36, 60, etc) if you can avoid it. 36 is presumably offsetof(your_struct, some_member_of_struct) and 60 is presumably sizeof(your_struct). Those simple changes will help your code work with different compilers.
Bear in mind that the size of structs (and struct members) is compiler dependent. So, if you build your code with a different compiler, odds are it will not be able to read your file correctly - the amount of data read and written by will vary with compiler.