Why is a transaction with outputs of less than ฿0.00005460 rejected? I'm trying to create a transaction via JSON-RPC API. It has low outputs, but not below "dust" threshold, yet it's still getting rejected by bitcoind with error code "-22". Transaction includes fee of ฿0.0001.

Transaction hex:

0100000001bbe7bfc7db0720cc0b66b55fc63b265e07554644ff18a79c07bb2e2b9bfb1666000000008c49304602210099c8d1376a735f3cfb79d19fdf6d196cdce60e5a3555aa5080b021b649b95d1a022100e5faf1deedd45f9666e77ae97a2e7618567abb03861f3756392a5ff2e35c9f54014104e171d9dee93d16be86a6489fb9dd06bcf42b2c19d869b6302ebc4e2cff93a8576dbf6c8c5372eca8c8ea69a1bd8107475916526377e8befd15ccaf91d9dd206cffffffff0236150000000000001976a9149bd0064acb814a139db73e049f04489dd9aec76b88ace91c0000000000001976a914a4d7331e96bf019411540cfc1d6e018d31c5329a88ac00000000


And human readable view:

{
    "txid" : "0c1b46a2cb0b2aef67c858503dc1cf365f2f792401ff6d2bcab9aa1fd0669702",
    "version" : 1,
    "locktime" : 0,
    "vin" : [
        {
            "txid" : "6616fb9b2b2ebb079ca718ff444655075e263bc65fb5660bcc2007dbc7bfe7bb",
            "vout" : 0,
            "scriptSig" : {
                "asm" : "304602210099c8d1376a735f3cfb79d19fdf6d196cdce60e5a3555aa5080b021b649b95d1a022100e5faf1deedd45f9666e77ae97a2e7618567abb03861f3756392a5ff2e35c9f5401 04e171d9dee93d16be86a6489fb9dd06bcf42b2c19d869b6302ebc4e2cff93a8576dbf6c8c5372eca8c8ea69a1bd8107475916526377e8befd15ccaf91d9dd206c",
                "hex" : "49304602210099c8d1376a735f3cfb79d19fdf6d196cdce60e5a3555aa5080b021b649b95d1a022100e5faf1deedd45f9666e77ae97a2e7618567abb03861f3756392a5ff2e35c9f54014104e171d9dee93d16be86a6489fb9dd06bcf42b2c19d869b6302ebc4e2cff93a8576dbf6c8c5372eca8c8ea69a1bd8107475916526377e8befd15ccaf91d9dd206c"
            },
            "sequence" : 4294967295
        }
    ],
    "vout" : [
        {
            "value" : 0.00005430,
            "n" : 0,
            "scriptPubKey" : {
                "asm" : "OP_DUP OP_HASH160 9bd0064acb814a139db73e049f04489dd9aec76b OP_EQUALVERIFY OP_CHECKSIG",
                "hex" : "76a9149bd0064acb814a139db73e049f04489dd9aec76b88ac",
                "reqSigs" : 1,
                "type" : "pubkeyhash",
                "addresses" : [
                    "1FCrwY2CsLJgsmbogSunECwCa6WswBBrfz"
                ]
            }
        },
        {
            "value" : 0.00007401,
            "n" : 1,
            "scriptPubKey" : {
                "asm" : "OP_DUP OP_HASH160 a4d7331e96bf019411540cfc1d6e018d31c5329a OP_EQUALVERIFY OP_CHECKSIG",
                "hex" : "76a914a4d7331e96bf019411540cfc1d6e018d31c5329a88ac",
                "reqSigs" : 1,
                "type" : "pubkeyhash",
                "addresses" : [
                    "1G2bcoCKj8s9GYheqQgU5CHSLCtGjyP9Vz"
                ]
            }
        }
    ]
}


Why it's getting rejected?

Update:
Minimal output that is accepted is 5460 satoshis.
Anything lower than 5460 satoshis is currently considered dust, that bloats the blockchain, while transferring a value that is lower than what it costs to store the resulting output on disk. From the bitcoinj source:


  Any standard (ie pay-to-address) output smaller than this value (in
  satoshis) will most likely be rejected by the network. This is
  calculated by assuming a standard output will be 34 bytes, and then
  using the formula used in getMinNonDustValue(BigInteger). Currently
  it's 5460 satoshis.