Just as a note, you don't have to use block height in the locktime. You can actually use UNIX timestamps which is more precise than using block height (you can't know for sure how many blocks will be mined in 18 years). A value over 500000000 for nLockTime will be a UNIX timestamp:
https://en.bitcoin.it/wiki/Protocol_documentation#tx I already tested this and it works as expected.