def write_task_point(self, latitude=None, longitude=None, text='',
                         distance_min=None, distance_max=None,
                         bearing1=None, bearing2=None):
        """
        Write a task declaration point::

            writer.write_task_point(
                latitude=(51 + 7.345 / 60.),
                longitude=(6 + 24.765 / 60.),
                text='Meiersberg',
            )
            # -> C5107345N00624765EMeiersberg

        If no ``latitude`` or ``longitude`` is passed, the fields will be
        filled with zeros (i.e. unknown coordinates). This however should only
        be used for ``TAKEOFF``  and ``LANDING`` points.

        For area tasks there are some additional parameters that can be used
        to specify the relevant areas::

            writer.write_task_point(
                -(12 + 32.112 / 60.),
                -(178 + .001 / 60.),
                'TURN AREA',
                distance_min=12.0,
                distance_max=32.0,
                bearing1=122.0,
                bearing2=182.0,
            )
            # -> C1232112S17800001W00120000032000122000182000TURN AREA

        :param latitude: latitude of the point (between -90 and 90 degrees)
        :param longitude: longitude of the point (between -180 and 180 degrees)
        :param text: type and/or name of the waypoint (e.g. ``TAKEOFF``,
            ``START``, ``TURN 1``, ``TURN 2``, ``FINISH`` or ``LANDING``)
        """

        latitude = self.format_latitude(latitude)
        longitude = self.format_longitude(longitude)

        record = latitude + longitude

        if None not in [distance_min, distance_max, bearing1, bearing2]:
            record += '%04d' % int(distance_min)
            record += '%03d' % int((distance_min - int(distance_min)) * 1000)
            record += '%04d' % int(distance_max)
            record += '%03d' % int((distance_max - int(distance_max)) * 1000)
            record += '%03d' % int(bearing1)
            record += '%03d' % int((bearing1 - int(bearing1)) * 1000)
            record += '%03d' % int(bearing2)
            record += '%03d' % int((bearing2 - int(bearing2)) * 1000)

        if text:
            record += text

        self.write_record('C', record)