'Add the ``DATASUM`` card to this HDU with the value set to the
checksum calculated for the data.
Parameters
when : str, optional
Comment string for the card that by default represents the
time when the checksum was calculated
blocking : str, optional
"standard" or "nonstandard", compute sum 2880 bytes at a time, or
not
datasum_keyword : str, optional
The name of the header keyword to store the datasum value in;
this is typically \'DATASUM\' per convention, but there exist
use cases in which a different keyword should be used
Returns
checksum : int
The calculated datasum
Notes
For testing purposes, provide a ``when`` argument to enable the comment
value in the card to remain consistent.  This will enable the
generation of a ``CHECKSUM`` card with a consistent value.'

def add_datasum(self, when=None, blocking='standard', datasum_keyword='DATASUM'):

    cs = self._calculate_datasum(blocking)
    if (when is None):
        when = 'data    unit    checksum    updated    {}'.format(self._get_timestamp())
    self._header[datasum_keyword] = (str(cs), when)
    return cs
