diff --git a/apps/metadata/mod.c b/apps/metadata/mod.c
index dbedc6e..6082b81 100644
--- a/apps/metadata/mod.c
+++ b/apps/metadata/mod.c
@@ -30,25 +30,34 @@
 #include "metadata_parsers.h"
 #include "rbunicode.h"
 
+#define MAGIC_OFFSET (0x438)
 bool get_mod_metadata(int fd, struct mp3entry* id3)
 {    
     /* Use the trackname part of the id3 structure as a temporary buffer */
-    unsigned char buf[1084];
+    unsigned char buf[0x34C];
     int read_bytes;
     char *p;
       
 
     if ((lseek(fd, 0, SEEK_SET) < 0) 
-         || ((read_bytes = read(fd, buf, sizeof(buf))) < 1084))
+         || ((read_bytes = read(fd, buf, sizeof(buf))) < (ssize_t)sizeof(buf)))
     {
         return false;
     }
-    
-    /* We don't do file format checking here
-     * There can be .mod files without any signatures out there */
+
+    /* is it a .mod file ? */
+    if (memcmp(&buf[MAGIC_OFFSET], "M.K.", 4))
+        return false;
+
+    if (memcmp(&buf[MAGIC_OFFSET], "M!K!", 4))
+        return false;
+
+    /* not valid */
+    if (memchr(buf, '\0', sizeof(buf)) != NULL)
+        return false;
 
     p = id3->id3v2buf;
-    
+
     /* Copy Title */
     strcpy(p, &buf[0x00]);
     id3->title = p;
