My code either prints blank statement or the second set of statement from a file stream in file manipulation

When I input a date for the Capricorn, it's either the output would not print the statement from the file or it will skip to the second set of number. Since The file contains 60 lines. Every 12 lines represents a fortune for one of the 12 signs. I do not know where is the error of my code or is it in the ZSCalculation(Date calcSign); function or in the way I called it in the main function?

#include<stdio.h>
#include<stdlib.h>

 struct Date {
    int year;
    int month;
    int day;
}; typedef struct Date Date;

//functions//
void monthSign(int month, int day);
int ZSCalculation(Date calcSign);

int main() {
    FILE* fp1 = fopen("data.for","r");
    FILE* fp2 = fopen("data.in","a+");

    if(!fp1||!fp2){
       printf("Oh no, an error occurred!\n");
       return -1;
    }

    Date data;
    Date proc;

    //Scanning user's input//
    printf("Enter birthdate: \n");
    scanf("%d %2d %2d", &data.year, &data.month, &data.day);

    //printing the zodiac sign//
    monthSign(data.month, data.day);

    char sign;
    int tmp;
    int i=0, j= 0;
    
    tmp = ZSCalculation(data);

    //read from the file fp2//
    while(fscanf(fp2, "%i-%i-%i",&proc.year,&proc.month,&proc.day)!=EOF){
        if(ZSCalculation(proc)==tmp)
            j++;
      j%=5;
    }

    //read from the file fp1 and print out//
    while(fscanf(fp1, "%c", &sign)!=EOF){
            if(i==tmp+(j*12))
                printf("%c", sign);
            if(sign=='\n')
                i++;
        }

    //writes and formats the output to the stream//
    //year
    fprintf(fp2, "%d-",data.year); 

    //month
    if(data.month < 10) 
        fprintf(fp2, "0%d-",data.month);
    else 
        fprintf(fp2, "%d-",data.month);
    
    //day
    if(data.day < 10)
        fprintf(fp2, "0%d\n",data.day);
    else 
        fprintf(fp2, "%d\n",data.day);

    //closes the streams
    fclose(fp2);
    fclose(fp1);

    return 0;
}

// prints out the zodiac sign of the
void monthSign(int month, int day)
{
    //January
    if (month==1){ 
        if (day>=1 && day<=20){
            printf("Capricorn: ");
        }

        else if (day>=21 && day<=31){
            printf("Aquarius: ");
        }

        else{
            printf("Invalid input!");
            exit(1);
        }
    }
    //February
    else if (month==2){
        if (day>=1 && day<=19){
            printf("Aquarius: ");
        }

        else if (day>=20 && day<=29){
            printf("Pisces: ");
        }

        else{
            printf("Invalid input");
            exit(1);
        }
    }
    //March
    else if (month==3){
        if (day>=1 && day<=20){
            printf("Pisces: ");
        }

        else if (day>=21 && day<=31){
            printf("Aries: ");
        }

        else{
            printf("Invalid input");
            exit(1);
        }
    }
    //April
    else if (month == 4){
        if (day>=1 && day<=20){
            printf("Aries: ");
        }

        else if (day>=21 && day<=30){
            printf("Taurus: ");
        }
           
        else{
            printf("Invalid input");
            exit(1);
        }
    }
    //May
    else if (month==5){
        if (day>=1 && day<=20){
            printf("Taurus: ");
        }

        else if (day>=21 && day<=31){
            printf("Gemini: ");
        }

        else{
            printf("Invalid input");
            exit(1);
        }
    }
    //June
    else if (month==6){
        if (day>=1 && day<=20){
            printf("Gemini: ");
        }

        else if (day>=21 && day<=30){
            printf("Cancer: ");
        }

        else{
            printf("Invalid input");
            exit(1);
        }
    }
    //July
    else if (month==7){
        if (day>=1 && day<=22){
            printf("Cancer: ");
        }
        else if (day>=23 && day<=31){
            printf("Leo: ");
        }
        else{
            printf("Invalid input");
            exit(1);
        }
    }
    //August
    else if (month==8){
        if (day>=1 && day<=22){
            printf("Leo: ");
        }

        else if (day>=23 && day<=31){
            printf("Virgo: ");
        }

        else{
            printf("Invalid input");
            exit(1);   
        }
    }
    //September
    else if (month ==9){
        if (day>=1 && day<=22){
            printf("Virgo: ");
        }

        else if (day>=23 && day<=30){
            printf("Libra: ");
        }

        else{
            printf("Invalid input");
            exit(1);
        }
    }
    //October
    else if (month==10){
        if (day>=1 && day<=22){
            printf("Libra: ");
        }

        else if (day>=23 && day<=31){
            printf("Scorpio: ");
        }

        else{
            printf("Invalid input");
            exit(1);
        }
    }
    //November
    else if (month==11){
        if (day>=1 && day<=22){
            printf("Scorpio: ");
        }

        else if (day>=23 && day<=30){
            printf("Saggitairus: ");
        }

        else{
            printf("Invalid input");
            exit(1);
        }
    }
    //December
    else if (month==12){
        if (day>=1 && day<=22){
            printf("Saggitairus: ");
        }

        else if (day>=23 && day<=31){
            printf("Capricorn: ");
        }

        else{
            printf("Invalid input");
            exit(1);
        }
    }

    else{
        printf("Invalid input");
        exit(1);
    }

    return;
}

//caculates the zodiac sign 
int ZSCalculation(Date calcSign){

    int zodiac=-1;
    int days[12] = {20,19,20,20,20,20,22,22,22,22,22,22};

    if(calcSign.day<=days[calcSign.month-1])
       zodiac=-2;

return (calcSign.month+zodiac)%12;
}

data.for file:

A few hours grace before the madness begins again.
A long-forgotten loved one will appear soon. Buy the negatives at any price.
Abandon the search for Truth; settle for a good fantasy.
After your lover has gone you will still have PEANUT BUTTER!
Among the lucky, you are the chosen one.
Are you a turtle?
Be different: conform.
Be free and open and breezy! Enjoy! Things won't get any better so get used to it.
Best of all is never to have been born. Second best is to die soon.
Caution: breathing may be hazardous to your health.
Cheer Up! Things are getting worse at a slower rate.
Do what comes naturally. Seethe and fume and throw a tantrum.
Don't hate yourself in the morning -- sleep till noon.
Don't kiss an elephant on the lips today.
Don't look now, but there is a multi-legged creature on your shoulder.
Don't relax! It's only your tension that's holding you together.
Don't tell any big lies today. Small ones can be just as effective.
Excellent day to have a rotten day.
Excellent time to become a missing person.
Expect the worst, it's the least you can do.
You will be attacked next Wednesday at 3:15 p.m. by six samurai sword wielding purple fish glued to Harley-Davidson motorcycles. Oh, and have a nice day!
Go to a movie tonight. Darkness becomes you.
Good day to let down old friends who need help.
Good news. Ten weeks from Friday will be a pretty good day.
If you learn one useless thing every day, in a single year you'll learn 365 useless things.
In the stairway of life, you'd best take the elevator.
It is so very hard to be an on-your-own-take-care-of-yourself-because-there-is-no-one-else-to-do-it-for-you-grown-up.
It was all so different before everything changed.
Never look up when dragons fly overhead.
Of course you have a purpose -- to find a purpose.
Questionable day. Ask somebody something.
Someone whom you reject today, will reject you tomorrow.
There is a 20% chance of tomorrow.
This will be a memorable month -- no matter how hard you try to forget it.
Today is the tomorrow you worried about yesterday.
Tomorrow will be canceled due to lack of interest.
Tonight you will pay the wages of sin; Don't forget to leave a tip.
What happened last night can happen again.
You are a very redundant person, that's what kind of person you are.
Write yourself a threatening letter and pen a defiant reply.
You are confused; but this is your normal state.
You are going to have a new love affair.
You are not dead yet. But watch for further reports.
You are number 6! Who is number one?
You are scrupulously honest, frank, and straightforward. Therefore you have few friends.
You are only young once, but you can stay immature indefinitely.
You are sick, twisted and perverted. I like that in a person.
You are standing on my toes.
You are wise, witty, and wonderful, but you spend too much time reading this sort of trash.
You definitely intend to start living sometime soon.
You have the body of a 19 year old. Please return it before it gets wrinkled.
You have the capacity to learn from mistakes. You'll learn a lot today.
You should emulate your heroes, but don't carry it too far. Especially if they are dead.
You two ought to be more careful--your love could drag on for years and years.
You will be a winner today. Pick a fight with a four-year-old.
You will be attacked by a beast who has the body of a wolf, the tail of a lion, and the face of Donald Duck.
You will be reincarnated as a toad; and you will be much happier.
You will be Told about it Tomorrow. Go Home and Prepare Thyself.
You will pay for your sins. If you have already paid, please disregard this message.
Your lucky number is 3552664958674928. Watch for it everywhere.