diff --git a/src/opcodes.json b/src/opcodes.json
index 04fca75..f53ec2f 100644
--- a/src/opcodes.json
+++ b/src/opcodes.json
@@ -113,6 +113,8 @@
 
   "OP_NOP1": 176,
   "OP_NOP2": 177,
+  "OP_CHECKLOCKTIMEVERIFY": 177,
+
   "OP_NOP3": 178,
   "OP_NOP4": 179,
   "OP_NOP5": 180,
diff --git a/test/integration/advanced.js b/test/integration/advanced.js
index bff0db3..796ba98 100644
--- a/test/integration/advanced.js
+++ b/test/integration/advanced.js
@@ -54,8 +54,62 @@ describe('bitcoinjs-lib (advanced)', function () {
           var actualScript = actual.outs[0].script
           assert.deepEqual(actualScript, dataScript)
 
-          assert.deepEqual(dataScript, dataScript2)
-          assert.deepEqual(data, data2)
+          done()
+        })
+      })
+    })
+  })
+
+  it('can create a transaction using OP_CHECKLOCKTIMEVERIFY', function (done) {
+    this.timeout(30000)
+
+    var network = bitcoin.networks.testnet
+    var keyPair = bitcoin.ECPair.makeRandom({ network: network })
+    var address = keyPair.getAddress()
+
+    blockchain.t.faucet(address, 2e4, function (err, unspents) {
+      if (err) return done(err)
+
+      // use the oldest unspent
+      var unspent = unspents.pop()
+      var tx = new bitcoin.TransactionBuilder(network)
+
+      // now + 1 month
+      var hodlDate = Math.floor((Date.now() + new Date(0).setMonth(1)) / 1000)
+      var hodlLockTimeBuffer = new Buffer(4)
+      hodlLockTimeBuffer.writeInt32LE(hodlDate | 0, 0)
+
+      // {signature} {signature} or
+      // OP_0 {signature} after 1 month
+      var hodlScript = bitcoin.script.compile([
+        bitcoin.opcodes.OP_IF,
+        hodlLockTimeBuffer,
+        bitcoin.opcodes.OP_CHECKLOCKTIMEVERIFY,
+        bitcoin.opcodes.OP_DROP,
+        bitcoin.opcodes.OP_ELSE,
+        keyPair.getPublicKeyBuffer(),
+        bitcoin.opcodes.OP_CHECKSIGVERIFY,
+        bitcoin.opcodes.OP_ENDIF,
+        keyPair.getPublicKeyBuffer(),
+        bitcoin.opcodes.OP_CHECKSIG
+      ])
+
+      tx.addInput(unspent.txId, unspent.vout)
+      tx.addOutput(hodlScript, 1000)
+      tx.sign(0, keyPair)
+
+      var txBuilt = tx.build()
+
+      blockchain.t.transactions.propagate(txBuilt.toHex(), function (err) {
+        if (err) return done(err)
+
+        // check that the message was propagated
+        blockchain.t.transactions.get(txBuilt.getId(), function (err, transaction) {
+          if (err) return done(err)
+
+          var actual = bitcoin.Transaction.fromHex(transaction.txHex)
+          var actualScript = actual.outs[0].script
+          assert.deepEqual(actualScript, hodlScript)
 
           done()
         })