S Lee,
Look at you last line in your while:
Code:
printf( "Your tax payable is %ld\n", &tax_in);
The variable you are printing is the same variable the user entered. It should be:
Code:
printf("Your tax payable is %ld\n", tax_pay);
Also, why declare them as longs? If I remember correctly a long and an int both are 4 bytes.
Another thing, it seems like you have a few braces missing inside your while (on the nested if-else's), may wanna double check that.
{forgot that printf's don't take addresses}