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.