diff --git a/PlanetarySystem.h b/PlanetarySystem.h
index dca040ac4f4cfb1b372d76619603e0be6ef17521..4fdf97fe53d19402d65404dbf1e577d23a003fe7 100644
--- a/PlanetarySystem.h
+++ b/PlanetarySystem.h
@@ -14,7 +14,7 @@ typedef struct {
     CelestialObject **objects;
     double interval;
     double zoom_factor;
-    uint32_t reference_frame_object_index;
+    int32_t reference_frame_object_index;
 } PlanetarySystem;
 
 PlanetarySystem *planetary_system_create(double interval);
diff --git a/main.c b/main.c
index 0aeb50b7014ed458260aa1daa7b3935d01b21342..336ce592e500fbec6127a6a4f355b9169eacbe12 100644
--- a/main.c
+++ b/main.c
@@ -60,7 +60,10 @@ int main() {
 
                 if (event.key.keysym.sym == SDLK_LEFT) {
                     planetary_system->reference_frame_object_index -= 1;
-                    planetary_system->reference_frame_object_index %= planetary_system->objects_length;
+
+                    if (planetary_system->reference_frame_object_index < 0) {
+                        planetary_system->reference_frame_object_index = planetary_system->objects_length - 1;
+                    }
                 }
 
                 if (event.key.keysym.sym == SDLK_RIGHT) {
@@ -70,11 +73,6 @@ int main() {
             }
         }
 
-        // if (gfx_keypressed() == SDLK_ESCAPE)
-        //     break;
-        // if (gfx_keypressed() == SDL_MOUSEBUTTONDOWN) {
-        //     printf("A");
-        // }
         struct timespec t = {.tv_sec = 0, .tv_nsec = sleep_duration};
         nanosleep(&t, NULL);
         elapsed_time += 1;