diff --git a/src/test/Makefile.am b/src/test/Makefile.am
index 667e53c6b..5a1f42ee6 100644
--- a/src/test/Makefile.am
+++ b/src/test/Makefile.am
@@ -45,6 +45,7 @@ test_bitcoin_SOURCES = \
   DoS_tests.cpp \
   getarg_tests.cpp \
   key_tests.cpp \
+  main_tests.cpp \
   miner_tests.cpp \
   mruset_tests.cpp \
   multisig_tests.cpp \
diff --git a/src/test/main_tests.cpp b/src/test/main_tests.cpp
new file mode 100644
index 000000000..b7f4312cd
--- /dev/null
+++ b/src/test/main_tests.cpp
@@ -0,0 +1,20 @@
+#include "core.h"
+#include "main.h"
+
+#include <boost/test/unit_test.hpp>
+
+BOOST_AUTO_TEST_SUITE(main_tests)
+
+BOOST_AUTO_TEST_CASE(subsidy_limit_test)
+{
+    uint64_t nSum = 0;
+    for (int nHeight = 0; nHeight < 7000000; nHeight += 1000) {
+        uint64_t nSubsidy = GetBlockValue(nHeight, 0);
+        BOOST_CHECK(nSubsidy <= 50 * COIN);
+        nSum += nSubsidy * 1000;
+        BOOST_CHECK(MoneyRange(nSum));
+    }
+    BOOST_CHECK(nSum == 2099999997690000ULL);
+}
+
+BOOST_AUTO_TEST_SUITE_END()