Are you sure the timestamp attribute is incrementing with every pass through the loop? The put will accumulate edits but may overwrite previous edits if the coordinates match exactly. The only coordinate that changes with each cell is the timestamp. You can verify the content of the Put before the context.write by calling put.toMap(Integert.MAX_VALUE).
Also keep in mind that HBase will keep only a limited number of pervious versions, though this is configurable. Also make sure your query is requesting to include all historical versions of the cell data, using Get#setMaxVersions(). A more complete explanation is available in the book http://hbase.apache.org/book/versions.html