diff --git a/vegas.mm b/vegas.mm
index 9e15ac4f20a4fe61ce0154c0b884ca77a756fe10..ad152e29f01a7433cbbbbaeec12467551bac521e 100644
--- a/vegas.mm
+++ b/vegas.mm
@@ -420,15 +420,45 @@ ReadFortran[stream_,type_]:=Module[{len,ans,len2},
   If[Length[ans]==1,First[ans],ans]
 ]
 
+GuessVegasVersion[stream_, intsize_:4]:=Module[{nrq, nrbins, inttype, time, magic,version},
+  SetStreamPosition[stream,0];
+  magic = StringJoin @@ Select[BinaryReadList[stream, "Character8", 17], # != "\000" &];
+  If[magic === "\t McMule  \t",
+    version=StringJoin @@ ReadFortran[stream, "Character8"];
+    version = First@StringCases[
+      version,
+      RegularExpression["v(\\d+)([NL])"] :> {
+        ToExpression["$1"],
+        "Integer" <> ToString[8 If["$2" == "L", 8, 4]]
+      }
+    ];
+    SetStreamPosition[stream,0];
+    Return[version, Module];
+  ];
+
+  inttype = "Integer"<>ToString[8 intsize];
+  (* Test v1 vs. v2 *)
+  SetStreamPosition[stream,6893 + 3 intsize];
+  {nrq, nrbins} = ReadFortran[stream, inttype];
+  SetStreamPosition[stream,6925 + 5 intsize + 22 nrq + 16 nrbins nrq];
+  time=ReadFortran[stream, "Real64"];
+  SetStreamPosition[stream,0];
+  If[FailureQ[time],
+    Return[{1,inttype}, Module],
+  (*else*)
+    Return[{2,inttype}, Module]
+  ];
+]
+
+
 importeverything=False;
 
 importer[stream_InputStream,intsize_:4, opts___]:=Module[{
   len,len2,ans,
   sha,it,ndo,si,swgt,schi,xi,randy,nrq,nrbins,quant,minv,maxv,names, X, delta, msg, version,
-  inttype
+  inttype, namelen
 },
-  inttype = "Integer"<>ToString[8 intsize];
-
+  {version, inttype} = GuessVegasVersion[stream, intsize];
   sha=StringJoin@@ReadFortran[stream,"Character8"];
   it=ReadFortran[stream,inttype];ndo=ReadFortran[stream,inttype];
   si=ReadFortran[stream,"Real64"];swgt=ReadFortran[stream,"Real64"];schi=ReadFortran[stream,"Real64"];
@@ -441,16 +471,12 @@ importer[stream_InputStream,intsize_:4, opts___]:=Module[{
   names=StringTrim[StringJoin@@@Partition[ReadFortran[stream,"Character8"],6]];
   quant=ReadFortran[stream,"Real64"];
 
-  If[Or[
-        FailureQ[time=ReadFortran[stream,"Real64"]],
-        FailureQ[msg=StringJoin@@ReadFortran[stream,"Character8"]]
-    ],
-    version=1
-  ];
   If[version>1,
-      If[Or[StringContainsQ[msg,"Warning"],MemberQ[$LoadVerbosity,"msg"]],
-        Print[StringTrim[msg]]
-      ];
+    time=ReadFortran[stream,"Real64"];
+    msg=StringJoin@@ReadFortran[stream,"Character8"];
+    If[Or[StringContainsQ[msg,"Warning"],MemberQ[$LoadVerbosity,"msg"]],
+      Print[StringTrim[msg]]
+    ];
   ];
 
   Flatten[{