The value provided by a ZKAP is less than its nominal value
ZKAPAuthorizer can be configured (on client and server, though both sides must agree to interoperate) with the bytes component of the value of a ZKAP. The time component is always 31 days. Call the bytes component B.
A ZKAP can be used to renew a lease or allocate a bucket (implicitly taking a lease on the shares placed in it). The lease is good for 31 days and for a data size of S, ceil(S / B)
ZKAPs must be spent to obtain the lease. In other words, fractional spending is not allowed and the cost of a lease is the rounded-up cost.
This means that any data that is stored that is not an exact multiple of B results in some of the value of a ZKAP being thrown away. Since most data will not be a multiple of B in size, this means that most lease-obtaining operations end up wasting some value. For small files, this is particularly disruptive of the intended system. Imagine B is set to 1,000,000 (ie, one megabyte). It should not cost the same to store ten bytes of data as to store 1 MB, nor should it cost 100,000 times more to store 100,000 ten byte data objects than it costs to store one 1 MB data object.