diff --git a/Kernel/Makefile.BuildNum.x86_64 b/Kernel/Makefile.BuildNum.x86_64
index 16710d2d014d4e5a2187a691485f7983840c746b..cfc4f867887a67083b9ec6459c2a61b57d750ce5 100644
--- a/Kernel/Makefile.BuildNum.x86_64
+++ b/Kernel/Makefile.BuildNum.x86_64
@@ -1 +1 @@
-BUILD_NUM = 213
+BUILD_NUM = 215
diff --git a/Kernel/drv/vterm.c b/Kernel/drv/vterm.c
index c2f068546b6cb32381017845412dc9db4d805c34..5ba340828151e1a78a021608ac169642014054d4 100644
--- a/Kernel/drv/vterm.c
+++ b/Kernel/drv/vterm.c
@@ -657,7 +657,8 @@ void VT_SetTerminal(int ID)
 		tVideo_IOCtl_Pos	pos;
 		pos.x = (gpVT_CurTerm->WritePos - gpVT_CurTerm->ViewPos) % gpVT_CurTerm->TextWidth;
 		pos.y = (gpVT_CurTerm->WritePos - gpVT_CurTerm->ViewPos) / gpVT_CurTerm->TextWidth;
-		VFS_IOCtl(giVT_OutputDevHandle, VIDEO_IOCTL_SETCURSOR, &pos);
+		if( pos.x < gpVT_CurTerm->TextHeight )
+			VFS_IOCtl(giVT_OutputDevHandle, VIDEO_IOCTL_SETCURSOR, &pos);
 	}
 	
 	if( gpVT_CurTerm->Mode == TERM_MODE_TEXT )
diff --git a/Kernel/lib.c b/Kernel/lib.c
index 8a07ea7626bf4b1e1dbb47a9c072b1653ee052a2..b13d2e47dcc417255758dc4018474644dcc36346 100644
--- a/Kernel/lib.c
+++ b/Kernel/lib.c
@@ -178,6 +178,10 @@ void itoa(char *buf, Uint num, int base, int minLength, char pad)
 	if(pos==__maxlen){return pos;}\
 	if(__s){__s[pos++]=ch;}else{pos++;}\
 	}while(0)
+#define GETVAL()	do {\
+	if(isLongLong)	val = va_arg(args, Uint64);\
+	else	val = va_arg(args, unsigned int);\
+	}while(0)
 /**
  * \brief VArg String Number Print Formatted
  */
@@ -215,9 +219,6 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
 			goto printString;
 		}
 		
-		// Get Argument
-		val = va_arg(args, unsigned int);
-		
 		// - Padding Side Flag
 		if(c == '+') {
 			bPadLeft = 1;
@@ -234,8 +235,7 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
 		
 		// - Minimum length
 		if(c == '*') {	// Dynamic length
-			minSize = val;
-			val = va_arg(args, unsigned int);
+			minSize = va_arg(args, unsigned int);
 			c = *__format++;
 		}
 		else if('1' <= c && c <= '9')
@@ -257,9 +257,6 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
 		{
 			c = *__format++;
 			if(c == 'l') {
-				#if BITS == 32
-				val |= (Uint64)va_arg(args, Uint) << 32;
-				#endif
 				c = *__format++;
 				isLongLong = 1;
 			}
@@ -271,6 +268,7 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
 		{
 		case 'd':
 		case 'i':
+			GETVAL();
 			if( isLongLong && val >> 63 ) {
 				PUTCH('-');
 				val = -val;
@@ -282,26 +280,31 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
 			itoa(p, val, 10, minSize, pad);
 			goto printString;
 		case 'u':
+			GETVAL();
 			itoa(p, val, 10, minSize, pad);
 			goto printString;
 		case 'x':
+			GETVAL();
 			itoa(p, val, 16, minSize, pad);
 			goto printString;
 		case 'o':
+			GETVAL();
 			itoa(p, val, 8, minSize, pad);
 			goto printString;
 		case 'b':
+			GETVAL();
 			itoa(p, val, 2, minSize, pad);
 			goto printString;
 
 		case 'B':	//Boolean
+			val = va_arg(args, unsigned int);
 			if(val)	p = "True";
 			else	p = "False";
 			goto printString;
 		
 		// String - Null Terminated Array
 		case 's':
-			p = (char*)(tVAddr)val;
+			p = va_arg(args, char*);	// Get Argument
 		printString:
 			if(!p)		p = "(null)";
 			len = strlen(p);
@@ -311,7 +314,7 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
 			break;
 		
 		case 'C':	// Non-Null Terminated Character Array
-			p = (char*)(tVAddr)val;
+			p = va_arg(args, char*);
 			if(!p)	goto printString;
 			while(minSize--)	PUTCH(*p++);
 			break;
@@ -319,6 +322,7 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
 		// Single Character
 		case 'c':
 		default:
+			GETVAL();
 			PUTCH( (Uint8)val );
 			break;
 		}
diff --git a/Kernel/threads.c b/Kernel/threads.c
index b1a2a61368a470407dc492fa4385011999ac98d9..cfc0639783cdd79c8c16e40f9a58e83c921f4820 100644
--- a/Kernel/threads.c
+++ b/Kernel/threads.c
@@ -1146,7 +1146,7 @@ void Mutex_Acquire(tMutex *Mutex)
 			Mutex->Waiting = us;
 			Mutex->LastWaiting = us;
 		}
-		#if 1
+		#if 0
 		{
 			 int	i = 0;
 			tThread	*t;
diff --git a/Modules/Display/VESA/main.c b/Modules/Display/VESA/main.c
index 506a8b5ac54b93a8ff782f5bd7eece12b822cfcc..bafab9d10d091961b3d4e2d640e56fad4c8660d5 100644
--- a/Modules/Display/VESA/main.c
+++ b/Modules/Display/VESA/main.c
@@ -519,7 +519,7 @@ void Vesa_FlipCursor(void *Arg)
 	// Sanity 1
 	if(giVesaCursorX < 0 || giVesaCursorY < 0
 	|| y*pitch + x + giVT_CharHeight*pitch > (int)gpVesaCurMode->fbSize/4) {
-		Debug("Cursor OOB (%i,%i)", x, y);
+		Log_Notice("VESA", "Cursor OOB (%i,%i)", x, y);
 		giVesaCursorTimer = -1;
 		return;
 	}