diff --git a/fs.c b/fs.c
index 91533d1d92a0dd1fb498e2fe64633bc79c9cce38..49a736d77d405ac1c350e2052c5d45170c7feffb 100644
--- a/fs.c
+++ b/fs.c
@@ -335,10 +335,10 @@ bmap(struct inode *ip, uint bn, int alloc)
 
   if(bn < NINDIRECT){
     // Load indirect block, allocating if necessary.
-    if((addr = ip->addrs[INDIRECT]) == 0){
+    if((addr = ip->addrs[NDIRECT]) == 0){
       if(!alloc)
         return -1;
-      ip->addrs[INDIRECT] = addr = balloc(ip->dev);
+      ip->addrs[NDIRECT] = addr = balloc(ip->dev);
     }
     bp = bread(ip->dev, addr);
     a = (uint*)bp->data;
@@ -375,16 +375,16 @@ itrunc(struct inode *ip)
     }
   }
   
-  if(ip->addrs[INDIRECT]){
-    bp = bread(ip->dev, ip->addrs[INDIRECT]);
+  if(ip->addrs[NDIRECT]){
+    bp = bread(ip->dev, ip->addrs[NDIRECT]);
     a = (uint*)bp->data;
     for(j = 0; j < NINDIRECT; j++){
       if(a[j])
         bfree(ip->dev, a[j]);
     }
     brelse(bp);
-    bfree(ip->dev, ip->addrs[INDIRECT]);
-    ip->addrs[INDIRECT] = 0;
+    bfree(ip->dev, ip->addrs[NDIRECT]);
+    ip->addrs[NDIRECT] = 0;
   }
 
   ip->size = 0;
diff --git a/fs.h b/fs.h
index c86483e39e41d52c47f646fe172162aa7617cf15..6f92592dd809ff165c7fe113862fe360a886b222 100644
--- a/fs.h
+++ b/fs.h
@@ -15,11 +15,9 @@ struct superblock {
   uint ninodes;      // Number of inodes.
 };
 
-#define NADDRS (NDIRECT+1)
 #define NDIRECT 12
-#define INDIRECT 12
 #define NINDIRECT (BSIZE / sizeof(uint))
-#define MAXFILE (NDIRECT  + NINDIRECT)
+#define MAXFILE (NDIRECT + NINDIRECT)
 
 // On-disk inode structure
 struct dinode {
@@ -28,7 +26,7 @@ struct dinode {
   short minor;          // Minor device number (T_DEV only)
   short nlink;          // Number of links to inode in file system
   uint size;            // Size of file (bytes)
-  uint addrs[NADDRS];   // Data block addresses
+  uint addrs[NDIRECT+1];   // Data block addresses
 };
 
 // Inodes per block.
diff --git a/fsvar.h b/fsvar.h
index 17bcb5b0055c56eb323152ed0fcd620cd1f3634e..7f135a9c622874819447925f70a7c309c1cecb99 100644
--- a/fsvar.h
+++ b/fsvar.h
@@ -11,7 +11,7 @@ struct inode {
   short minor;
   short nlink;
   uint size;
-  uint addrs[NADDRS];
+  uint addrs[NDIRECT+1];
 };
 
 #define I_BUSY 0x1
diff --git a/mkfs.c b/mkfs.c
index 24a4b4f8da87e27cc93701a529a3cb157ccad00d..3a3c62a616cdc3cfbde837884514c25f4796bb3b 100644
--- a/mkfs.c
+++ b/mkfs.c
@@ -259,17 +259,17 @@ iappend(uint inum, void *xp, int n)
       }
       x = xint(din.addrs[fbn]);
     } else {
-      if(xint(din.addrs[INDIRECT]) == 0) {
+      if(xint(din.addrs[NDIRECT]) == 0) {
         // printf("allocate indirect block\n");
-        din.addrs[INDIRECT] = xint(freeblock++);
+        din.addrs[NDIRECT] = xint(freeblock++);
         usedblocks++;
       }
       // printf("read indirect block\n");
-      rsect(xint(din.addrs[INDIRECT]), (char*) indirect);
+      rsect(xint(din.addrs[NDIRECT]), (char*) indirect);
       if(indirect[fbn - NDIRECT] == 0) {
         indirect[fbn - NDIRECT] = xint(freeblock++);
         usedblocks++;
-        wsect(xint(din.addrs[INDIRECT]), (char*) indirect);
+        wsect(xint(din.addrs[NDIRECT]), (char*) indirect);
       }
       x = xint(indirect[fbn-NDIRECT]);
     }