diff --git a/lib/currencies.js b/lib/currencies.js
index <HASH>..<HASH> 100644
--- a/lib/currencies.js
+++ b/lib/currencies.js
@@ -17,11 +17,13 @@ function Currencies (currencies) {
         throw new Error('Missing currencies object');
     }
 
-    this.keys = parseInt(currencies.keys || 0);
+    this.keys = parseFloat(currencies.keys || 0);
     this.metal = parseFloat(currencies.metal || 0);
 
     if (isNaN(this.keys) || isNaN(this.metal)) {
         throw new Error('Not a valid currencies object');
+    } else if (this.keys - Math.floor(this.keys) !== 0 && currencies.metal !== undefined) {
+        throw new Error('Can\'t use rational number for keys when also supplying metal');
     }
 
     this.metal = toRefined(toScrap(this.metal));
diff --git a/test/currencies.js b/test/currencies.js
index <HASH>..<HASH> 100644
--- a/test/currencies.js
+++ b/test/currencies.js
@@ -17,6 +17,11 @@ describe('Object', function () {
                 new Currencies();
             });
         });
+        it('should throw an error when using a rational number for keys when supplying metal', function () {
+            assert.throws(function () {
+                new Currencies({ keys: 1.5, metal: 2.11 });
+            });
+        });
     });
 
     describe('#toString()', function () {
Allow floating point / rational number for keys