diff --git a/src/control.rs b/src/control.rs
index 24a68d2db9835abb0b2c48144e6f0d461cb84b84..1899b1d9238df6ece15a17544eb82eae1b908d41 100644
--- a/src/control.rs
+++ b/src/control.rs
@@ -43,6 +43,32 @@ pub trait TermWrite {
     fn hide_cursor(&mut self) -> io::Result<usize> {
         self.csi(b"?25l")
     }
+    /// Move the cursor `num` spaces to the left.
+    fn move_cursor_left(&mut self, num: u32) -> io::Result<usize> {
+        if num > 0 {
+            self.csi(&[b'0' + (num / 10000) as u8,
+                       b'0' + (num / 1000) as u8 % 10,
+                       b'0' + (num / 100) as u8 % 10,
+                       b'0' + (num / 10) as u8 % 10,
+                       b'0' + num as u8 % 10,
+                       b'C'])
+        } else {
+            Ok(0)
+        }
+    }
+    /// Move the cursor `num` spaces to the right.
+    fn move_cursor_right(&mut self, num: u32) -> io::Result<usize> {
+        if num > 0 {
+            self.csi(&[b'0' + (num / 10000) as u8,
+                       b'0' + (num / 1000) as u8 % 10,
+                       b'0' + (num / 100) as u8 % 10,
+                       b'0' + (num / 10) as u8 % 10,
+                       b'0' + num as u8 % 10,
+                       b'D'])
+        } else {
+            Ok(0)
+        }
+    }
 
     // TODO
     // fn mode