IRremote library messing things

Hi,
the IRremote library has been messing around with my code and I now get an error when trying to compile the code. What I understood from the error was that something has been declared twice, and (I think) not the code. The code:

#include <LiquidCrystal.h>
#include <IRremote.h>
#include <Wire.h>
#include <DS3231.h>

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
IRrecv irrecv(22);
decode_results results;
DS3231 clock;

int data;
int data2;
int data3;
int data4;
int dh2d;
int dm2d;
int pos;
int on;
int alarm;
bool Century=false;
bool h12;
bool PM;
byte ADay, AHour, AMinute, ASecond, ABits;
bool ADy, A12h, Apm;
int light;
int active;
int gtg;


void setup() {
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  lcd.begin(16, 2);
  lcd.clear();
  Wire.begin();
}

void loop() {
  if (irrecv.decode(&results)) {
    if (pos == 0) {
      if (results.value == 16753245) {
        data = 10;
        Serial.println(data);
      }
      if (results.value == 16738455) {
        data = 0;
        Serial.println(data);
      }
      if (results.value == 16724175) {
        data = 1;
        Serial.println(data);
      }
      if (results.value == 16718055) {
        data = 2;
        Serial.println(data);
      }
      if (results.value == 16743045) {
        data = 3;
        Serial.println(data);
      }
      if (results.value == 16716015) {
        data = 4;
        Serial.println(data);
      }
      if (results.value == 16726215) {
        data = 5;
        Serial.println(data);
      }
      if (results.value == 16734885) {
        data = 6;
        Serial.println(data);
      }
      if (results.value == 16728765) {
        data = 7;
        Serial.println(data);
      }
      if (results.value == 16730805) {
        data = 8;
        Serial.println(data);
      }
      if (results.value == 16732845) {
        data = 9;
        Serial.println(data);
      }
      pos = 1;
      delay(1000);
      irrecv.resume(); // receive the next value
    }
    else if (pos == 1) {
      if (results.value == 16753245) {
        data = 10;
        Serial.println(data2);
      }
      if (results.value == 16738455) {
        data = 0;
        Serial.println(data2);
      }
      if (results.value == 16724175) {
        data = 1;
        Serial.println(data2);
      }
      if (results.value == 16718055) {
        data = 2;
        Serial.println(data2);
      }
      if (results.value == 16743045) {
        data = 3;
        Serial.println(data2);
      }
      if (results.value == 16716015) {
        data = 4;
        Serial.println(data2);
      }
      if (results.value == 16726215) {
        data = 5;
        Serial.println(data2);
      }
      if (results.value == 16734885) {
        data = 6;
        Serial.println(data2);
      }
      if (results.value == 16728765) {
        data = 7;
        Serial.println(data2);
      }
      if (results.value == 16730805) {
        data = 8;
        Serial.println(data2);
      }
      if (results.value == 16732845) {
        data = 9;
        Serial.println(data2);
      }
      pos = 2;
      delay(1000);
      irrecv.resume(); // receive the next value
    }
    else if (pos == 2) {
      if (results.value == 16753245) {
        data = 10;
        Serial.println(data3);
      }
      if (results.value == 16738455) {
        data = 0;
        Serial.println(data3);
      }
      if (results.value == 16724175) {
        data = 1;
        Serial.println(data3);
      }
      if (results.value == 16718055) {
        data = 2;
        Serial.println(data3);
      }
      if (results.value == 16743045) {
        data = 3;
        Serial.println(data3);
      }
      if (results.value == 16716015) {
        data = 4;
        Serial.println(data3);
      }
      if (results.value == 16726215) {
        data = 5;
        Serial.println(data3);
      }
      if (results.value == 16734885) {
        data = 6;
        Serial.println(data3);
      }
      if (results.value == 16728765) {
        data = 7;
        Serial.println(data3);
      }
      if (results.value == 16730805) {
        data = 8;
        Serial.println(data3);
      }
      if (results.value == 16732845) {
        data = 9;
        Serial.println(data3);
      }
      pos = 4;
      delay(1000);
      irrecv.resume(); // receive the next value
    }
    if (pos == 3) {
      if (results.value == 16753245) {
        data = 10;
        Serial.println(data4);
      }
      if (results.value == 16738455) {
        data = 0;
        Serial.println(data4);
      }
      if (results.value == 16724175) {
        data = 1;
        Serial.println(data4);
      }
      if (results.value == 16718055) {
        data = 2;
        Serial.println(data4);
      }
      if (results.value == 16743045) {
        data = 3;
        Serial.println(data4);
      }
      if (results.value == 16716015) {
        data = 4;
        Serial.println(data4);
      }
      if (results.value == 16726215) {
        data = 5;
        Serial.println(data4);
      }
      if (results.value == 16734885) {
        data = 6;
        Serial.println(data4);
      }
      if (results.value == 16728765) {
        data = 7;
        Serial.println(data4);
      }
      if (results.value == 16730805) {
        data = 8;
        Serial.println(data4);
      }
      if (results.value == 16732845) {
        data = 9;
        Serial.println(data4);
      }
      pos = 0;
      delay(1000);
      irrecv.resume(); // receive the next value
    }
  }
  esegui();
  if (data == 10 && on == 0) {
    on = 1;
    alarm = 1;
    digitalWrite(12, HIGH);
    gtg = 0;
    active = 1;
  } else if (data == 10 && on == 1) {
    alarm = 0;
    on = 0;
    digitalWrite(12, LOW);
    gtg = 1;
    active = 0;
  }
  alarmTriggerCheck();
  converter();
}
void esegui() {
  lcd.clear();
  lcd.print(clock.getHour(h12, PM), DEC);
 lcd.print(':');
 lcd.print(clock.getMinute(), DEC);
 lcd.print(':');
 lcd.print(clock.getSecond(), DEC);
 if (h12) {
 if (PM) {
 lcd.print(" PM ");
 } else {
 lcd.print(" AM ");
 }
 }
  lcd.setCursor(0, 1);
  lcd.print("Sveglia: ");
  lcd.setCursor(10, 1);
  lcd.print(data);
  lcd.setCursor(11, 1);
  lcd.print(data2);
  lcd.setCursor(12, 1);
  lcd.print(":");
  lcd.setCursor(13, 1);
  lcd.print(data3);
  lcd.setCursor(14, 1);
  lcd.print(data4);
}

void alarmTriggerCheck() {
  if (active = 1) {
  if ((((clock.getHour(h12, PM), DEC) == dh2d) && ((clock.getMinute(), DEC) == dm2d)) || gtg == 0 ) {
    tone(13, 1047, 1);
    digitalWrite(8, HIGH);
    digitalWrite(9, HIGH);
    digitalWrite(10, HIGH);
    digitalWrite(11, HIGH);
    delay(1000);
    noTone(13);
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    delay(1000);
  }
  if(analogRead(A0) >= 50) {
    gtg = 1;
  }
  }
}
void converter() {
  if (data == 0) {
    dh2d = data2;
  } else if(data == 1) {
    dh2d = 10 + data2;
  } else if(data == 2) {
    dh2d = 20 + data2;
  }
  if (data3 == 0) {
    dm2d = data4;
  } else if(data3 == 1) {
    dm2d = 10 + data4;
  } else if(data3 == 2) {
    dm2d = 20 + data4;
  }
}

The error:

Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':

(.text+0x0): multiple definition of `__vector_13'

/tmp/287432381/build/libraries/irremote_2_2_3/IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here

/home/ubuntu/opt/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2/bin/../lib/gcc/avr/5.4.0/../../../../avr/bin/ld: Disabling relaxation: it will not work with multiple definitions

collect2: error: ld returned 1 exit status

exit status 1

Thank you

Looks like you have an interrupt vector conflict.

Solution found! I need to change the timer in IRremoteInt.cpp to not be Timer2, because it conflicts with the IR library.