diff --git a/procps/free.c b/procps/free.c
index e8bea50..a941b62 100644
--- a/procps/free.c
+++ b/procps/free.c
@@ -15,54 +15,67 @@
 int free_main(int argc UNUSED_PARAM, char **argv)
 {
 	struct sysinfo info;
+	unsigned mem_unit;
+
+#if ENABLE_DESKTOP
+	if (argv[1] && argv[1][0] == '-')
+		bb_show_usage();
+#endif
+
 	sysinfo(&info);
 
 	/* Kernels prior to 2.4.x will return info.mem_unit==0, so cope... */
-	if (info.mem_unit == 0) {
-		info.mem_unit=1;
+	mem_unit = 1;
+	if (info.mem_unit != 0) {
+		mem_unit = info.mem_unit;
 	}
-	if (info.mem_unit == 1) {
-		info.mem_unit=1024;
 
-		/* TODO:  Make all this stuff not overflow when mem >= 4 Gib */
-		info.totalram/=info.mem_unit;
-		info.freeram/=info.mem_unit;
+	/* Convert values to kbytes */
+	if (mem_unit == 1) {
+		info.totalram >>= 10;
+		info.freeram >>= 10;
 #if BB_MMU
-		info.totalswap/=info.mem_unit;
-		info.freeswap/=info.mem_unit;
+		info.totalswap >>= 10;
+		info.freeswap >>= 10;
 #endif
-		info.sharedram/=info.mem_unit;
-		info.bufferram/=info.mem_unit;
+		info.sharedram >>= 10;
+		info.bufferram >>= 10;
 	} else {
-		info.mem_unit/=1024;
-		/* TODO:  Make all this stuff not overflow when mem >= 4 Gib */
-		info.totalram*=info.mem_unit;
-		info.freeram*=info.mem_unit;
+		mem_unit >>= 10;
+		/* TODO:  Make all this stuff not overflow when mem >= 4 Tb */
+		info.totalram *= mem_unit;
+		info.freeram *= mem_unit;
 #if BB_MMU
-		info.totalswap*=info.mem_unit;
-		info.freeswap*=info.mem_unit;
+		info.totalswap *= mem_unit;
+		info.freeswap *= mem_unit;
 #endif
-		info.sharedram*=info.mem_unit;
-		info.bufferram*=info.mem_unit;
+		info.sharedram *= mem_unit;
+		info.bufferram *= mem_unit;
 	}
 
-	if (argv[1] && argv[1][0] == '-')
-		bb_show_usage();
-
-	printf("%6s%13s%13s%13s%13s%13s\n", "", "total", "used", "free",
-			"shared", "buffers");
-
-	printf("%6s%13ld%13ld%13ld%13ld%13ld\n", "Mem:", info.totalram,
-			info.totalram-info.freeram, info.freeram,
-			info.sharedram, info.bufferram);
-
+	printf("      %13s%13s%13s%13s%13s\n",
+		"total",
+		"used",
+		"free",
+		"shared", "buffers" /* swap and total don't have these columns */
+	);
+	printf("%6s%13lu%13lu%13lu%13lu%13lu\n", "Mem:",
+		info.totalram,
+		info.totalram - info.freeram,
+		info.freeram,
+		info.sharedram, info.bufferram
+	);
 #if BB_MMU
-	printf("%6s%13ld%13ld%13ld\n", "Swap:", info.totalswap,
-			info.totalswap-info.freeswap, info.freeswap);
-
-	printf("%6s%13ld%13ld%13ld\n", "Total:", info.totalram+info.totalswap,
-			(info.totalram-info.freeram)+(info.totalswap-info.freeswap),
-			info.freeram+info.freeswap);
+	printf("%6s%13lu%13lu%13lu\n", "Swap:",
+		info.totalswap,
+		info.totalswap - info.freeswap,
+		info.freeswap
+	);
+	printf("%6s%13lu%13lu%13lu\n", "Total:",
+		info.totalram + info.totalswap,
+		(info.totalram - info.freeram) + (info.totalswap - info.freeswap),
+		info.freeram + info.freeswap
+	);
 #endif
 	return EXIT_SUCCESS;
 }
