Are I2C RTC DS1307 CLOCK generally inaccurate?

I just bought two of these on ebay for $1.50 each. After testing it for an hour against a real-time clock, there is a +3 seconds difference. Is this typically normal? I never bought these things before. I'm testing out a fix by simply moving 3 seconds back every hour, but it's taking up some code resources...
I also accidentally mixed the + and - which slightly burn the module earlier, but not sure if that could have cause the inaccuracy. I bought two, but didn't test out the other one yet.

What code did you use for testing? $1.50 is a very cheap for complete modules, can post a picture of the product?
3 seconds is an error of 1 promille which is far too much for an RTC. It's about what you would expect of an UNO just using the onboard resonator as the time reference.

Here is the module. The other side is the coin battery. I am testing out the second one right now since I bought two, maybe the first one is defective. All the program is doing now is receive data from the module.

I ask again: What code did you use for testing?
The module looks OK and includes a crystal which usually make these things exact to a few seconds per month.

My guess is that your code does the wrong thing, maybe you don't really read the RTC but just take the internal timer of the Arduino. Show the code and I can tell you more.