Index: uspace/app/mkminix/mkminix.c
===================================================================
--- uspace/app/mkminix/mkminix.c	(revision bb0db56421280d74550874133fcc108b90472bde)
+++ uspace/app/mkminix/mkminix.c	(revision 8ceba1e4d85364d1f4f4715634a5ddcafb2219eb)
@@ -57,7 +57,8 @@
 #define USED	1
 
-#define UPPER(n, size) (((n) / (size)) + (((n) % (size)) != 0))
-#define NEXT_DENTRY(p, dirsize)	(p += dirsize)
-#define FIRST_ZONE(bs)		((MFS_BOOTBLOCK_SIZE + MFS_SUPERBLOCK_SIZE) / (bs))
+#define UPPER(n, size) 			(((n) / (size)) + (((n) % (size)) != 0))
+#define NEXT_DENTRY(p, dirsize)		(p += dirsize)
+#define FIRST_ZONE(bs)			((MFS_BOOTBLOCK_SIZE + MFS_SUPERBLOCK_SIZE) / (bs))
+#define CONVERT_1K_OFF(off, bs)		((off) * ((bs) / MFS_MIN_BLOCKSIZE))
 
 typedef enum {
@@ -319,4 +320,5 @@
 	int rc;
 	long itable_off;
+	unsigned long itable_size;
 
 	itable_off = FIRST_ZONE(sb->block_size);
@@ -324,5 +326,6 @@
 
 	/*Convert to 1K offset*/
-	itable_off *= sb->block_size / MFS_MIN_BLOCKSIZE;
+	itable_off = CONVERT_1K_OFF(itable_off, sb->block_size);
+	itable_size = CONVERT_1K_OFF(sb->itable_size, sb->block_size);
 
 	itable_buf = malloc(sb->block_size);
@@ -333,5 +336,5 @@
 	memset(itable_buf, 0x00, sb->block_size);
 
-	for (i = 0; i < sb->itable_size * (sb->block_size / MFS_MIN_BLOCKSIZE); ++i, ++itable_off) {
+	for (i = 0; i < itable_size; ++i, ++itable_off) {
 		rc = block_write_direct(sb->handle, itable_off, 1, itable_buf);
 
@@ -386,5 +389,5 @@
 
 	/*Convert to 1K block offset*/
-	itable_off *= sb->block_size / MFS_MIN_BLOCKSIZE;
+	itable_off = CONVERT_1K_OFF(itable_off, sb->block_size);
 
 	const time_t sec = time(NULL);
@@ -570,18 +573,22 @@
 
 	/*Convert to 1K block offsets*/
-	ibmap_nblocks *= sb->block_size / MFS_BLOCKSIZE;
-	zbmap_nblocks *= sb->block_size / MFS_BLOCKSIZE;
+	ibmap_nblocks = CONVERT_1K_OFF(ibmap_nblocks, sb->block_size);
+	zbmap_nblocks = CONVERT_1K_OFF(zbmap_nblocks, sb->block_size);
 
 	ibmap_buf8 = (uint8_t *) ibmap_buf;
 	zbmap_buf8 = (uint8_t *) zbmap_buf;
 
+	int start_block = FIRST_ZONE(sb->block_size);
+
 	for (i = 0; i < ibmap_nblocks; ++i) {
-		if ((rc = block_write_direct(sb->handle, 2 + i,
+		if ((rc = block_write_direct(sb->handle, start_block + i,
 				1, (ibmap_buf8 + i * MFS_BLOCKSIZE))) != EOK)
 			return rc;
 	}
 
+	start_block = FIRST_ZONE(sb->block_size) + ibmap_nblocks;
+
 	for (i = 0; i < zbmap_nblocks; ++i) {
-		if ((rc = block_write_direct(sb->handle, 2 + ibmap_nblocks + i,
+		if ((rc = block_write_direct(sb->handle, start_block + i,
 				1, (zbmap_buf8 + i * MFS_BLOCKSIZE))) != EOK)
 			return rc;
