     pcd8544_set_is_data();
 }
 
-void pcd8544_place_cursor(uint8_t column, uint8_t line) {
+void pcd8544_place_cursor_precise(uint8_t x, uint8_t line) {
     if (line >= PCD8544_LINES)
         line %= PCD8544_LINES;
-    if (column >= PCD8544_COLS)
-        column %= PCD8544_COLS;
-    // Yes, x is pixel addressed, y is line addressed This makes sense because
+    if (x >= PCD8544_WIDTH)
+        x %= PCD8544_WIDTH;
+    // Yes, x is pixel addressed, y is line addressed. This makes sense because
     // we write 8 pixels at a time.
-    current_col = column;
+    current_x = x;
     current_line = line;
     pcd8544_set_is_command();
-    SPI.transfer(PCD8544_SET_X_ADDRESS | (current_col * 6));
+    SPI.transfer(PCD8544_SET_X_ADDRESS | (current_x));
     SPI.transfer(PCD8544_SET_LINE_ADDRESS | current_line);
     pcd8544_set_is_data();
+}
+
+void pcd8544_place_cursor(uint8_t column, uint8_t line) {
+    pcd8544_place_cursor_precise(column * 6, line);
 }
 
 static inline void write_bytes(const uint8_t * data, size_t count) {

#define pcd8544_set_is_data() digitalWrite(PCD8544_PIN_DC, 1)
#define pcd8544_set_is_command() digitalWrite(PCD8544_PIN_DC, 0)

static uint8_t current_col = 0;
static uint8_t current_line = 0;

static inline void inc_col(void) {
    if (++current_col >= PCD8544_COLS) {
        current_col = 0;
        if (++current_line >= PCD8544_LINES)
            current_line = 0;
    }
}

void pcd8544_init(void) {

                write_bytes(numbers_24x16[line] + (16 * ((*(clock + i)) - '0')), 16);
                write_byte(0x00, 1);
            }
        write_byte(0x00, 4);
    }
}

