Index: uspace/srv/console/console.c
===================================================================
--- uspace/srv/console/console.c	(revision 87d3ecf9a85a8ae0fc4acfbcaf8178c2f6f0b765)
+++ uspace/srv/console/console.c	(revision 0ed2e0e07159e63bbe76debb88533c9b15580498)
@@ -288,7 +288,10 @@
 static void write_char(console_t *cons, wchar_t ch)
 {
+	bool flush_cursor = false;
+
 	switch (ch) {
 	case '\n':
 		fb_pending_flush();
+		flush_cursor = true;
 		cons->scr.position_y++;
 		cons->scr.position_x = 0;
@@ -316,6 +319,8 @@
 	}
 	
-	if (cons->scr.position_x >= cons->scr.size_x)
+	if (cons->scr.position_x >= cons->scr.size_x) {
+		flush_cursor = true;
 		cons->scr.position_y++;
+	}
 	
 	if (cons->scr.position_y >= cons->scr.size_y) {
@@ -328,5 +333,7 @@
 			async_msg_1(fb_info.phone, FB_SCROLL, 1);
 	}
-	
+
+	if (cons == active_console && flush_cursor)
+		curs_goto(cons->scr.position_x, cons->scr.position_y);
 	cons->scr.position_x = cons->scr.position_x % cons->scr.size_x;
 }
@@ -482,7 +489,4 @@
 		write_char(cons, ch);
 	}
-	
-	if (cons == active_console)
-		curs_goto(cons->scr.position_x, cons->scr.position_y);
 	
 	async_serialize_end();
