diff --git a/lib/edn/parser.rb b/lib/edn/parser.rb
index <HASH>..<HASH> 100644
--- a/lib/edn/parser.rb
+++ b/lib/edn/parser.rb
@@ -98,7 +98,7 @@ module EDN
     rule(:integer) {
       (match['\-\+'].maybe >>
        (str('0') | match('[1-9]') >> digit.repeat)).as(:integer) >>
-      str('N').maybe.as(:precision)
+      (str('N') | str("M") ).maybe.as(:precision)
     }
 
     rule(:float) {
diff --git a/spec/edn_spec.rb b/spec/edn_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/edn_spec.rb
+++ b/spec/edn_spec.rb
@@ -19,6 +19,11 @@ describe EDN do
       EDN.read('\c').should == "c"
     end
 
+    it "should support M suffix without decimals" do
+      EDN.read(123412341231212121241234.to_edn).should == 123412341231212121241234
+      EDN.read("123412341231212121241234M").should == 123412341231212121241234
+    end
+
     it "reads #inst tagged elements" do
       EDN.read('#inst "2012-09-10T16:16:03-04:00"').should == DateTime.new(2012, 9, 10, 16, 16, 3, '-04:00')
     end
Very large numbers are adding an M (which is ok), but the parse wouldn't handle integers with M precision