 }
 
 void pcd8544_newline(void) {
-    while (current_col != 0) {
-        for (uint8_t i = 0; i != 6; i++)
-            SPI.transfer(0x00);
-        inc_col();
-    }
+    uint8_t n = PCD8544_WIDTH - current_x;
+    for (uint8_t i = 0; i != n; i++)
+        SPI.transfer(0x00);
+    inc_x(n);
 }

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


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

static uint8_t current_x = 0;
static uint8_t current_line = 0;

static inline void inc_x(uint8_t count) {
    current_x += count;
    if (current_x >= PCD8544_WIDTH) {
        current_line += current_x / PCD8544_WIDTH;
        current_x %= PCD8544_WIDTH;
        if (current_line >= PCD8544_LINES)
            current_line %= PCD8544_LINES;
    }
}

static inline void inc_col(void) {
    inc_x(6);
}

void pcd8544_init(void) {
