Problem with RTC and time library

That library you use is simply wrong. I doubt that the date is returned correctly if ran for more than a day:

  sec = Wire.read();
  tm.Second = bcd2dec(sec & 0x7f);   
  tm.Minute = bcd2dec(Wire.read() );
  tm.Hour =   bcd2dec(Wire.read() & 0x3f);  // mask assumes 24hr clock
  tm.Wday = bcd2dec(Wire.read() );
  tm.Day = bcd2dec(Wire.read() );
  tm.Month = bcd2dec(Wire.read() );
  tm.Year = y2kYearToTm((bcd2dec(Wire.read())));

Compare that with table 2 of the DS1307 datasheet. The DS1307 doesn't have a register for the weekday, so the weekday value was read/written to/from the day field, day to/from month and so on.