I am working on java applications for interaction between objects. For the space objects (sun, planets and their moons), it works on the gravitational attraction between them. At present, I am considering 44 objects (sun, planets, major moons and major asteroids)
Say I start with Position and velocity vectors of each of the objects with Sun as centre obtained from telnet ssd.jpl.nasa.gov 6775(Horizons). as on 01/Jan/2017 at 00:00h.
Let the objects interact with each other for 4344h (ie till 01/07/2017 at 00:00h).
Basically, every 2s step, the net gravitational force in each object is calculated and the in one shot update all the velocities and positions caused by the resultant acceleration of each object. 
Then I compare the final updated position vectors from the application with data obtained from Horizons after correcting for the Sun's updated position.
The comparison shows that the positions of Earth and the outer planets are have position error of less than 50km (In fact, the farther planets it is less then 10km). Where as for Mercury the error is 250km. 
And the moons of Jupiter and Saturn are off by 50,000 to 300,000 km!
In my application, I am not differentiating between the Sun, planets and moons an still why should there be so much error for the moons?
I have tried even smaller calculations steps (0.25s), still no improvement.

I know, it is difficult to comment without looking at the actual code. 

I just want to know as to whether I am missing out on something. I even tried to introduce a time delay for the gravitational force based on distance with no improvement (Later I read -without understanding - that the speed of gravity does not matter in such calculations!).

if any more info required from me, will be glad to supply.