Rounding causes inaccuracy, help needed

Hello,

if you don’t care about the story below, skip to the last paragraph for the tldr.

For my game, I’ve made an easy-to-use instruction list to program enemies. It works pretty well, except it’s inaccurate, and the only reason I can think of is a rounding error.

Here’s how my instruction list works:
list[0] = “Right:60”;
list[1] = “Left:60”;
The game loop calls a function on the object that decides what action to do. Right:60 means it moves right for 60 game loops, then goes to the next item on the list. This works fine, except for the inaccuracy.

An object gets his xSpeed altered every game loop, depending on the current instruction. If it’s “Right”, xSpeed += acceleration, if it’s “Left”, xSpeed -= acceleration. The game loop itself multiplies the xSpeed by a friction variable, which is 0.7 (may be changed later, currently this works best). Now what happens is, the object bounces back and forth just fine. But it after so many times it keeps going a couple of pixels further to the left than to the right. Eventually, the object falls off the screen on the left, while the instruction says it should do 60 game loops of “Left” and 60 loops of “Right”. How can I fix this?