def _calculate_pen_up_strokes(self, pointlist, times=None):
        """ 'Pen-up' strokes are virtual strokes that were not drawn. It
            models the time when the user moved from one stroke to the next.
        """
        if times is None:
            times = []
        for i in range(len(pointlist) - 1):
            stroke_info = {"start": pointlist[i][-1]['time'],
                           "end": pointlist[i + 1][0]['time'],
                           "pen_down": False}
            x, y, t = [], [], []
            for point in [pointlist[i][-1], pointlist[i + 1][0]]:
                if point['time'] not in t:
                    x.append(point['x'])
                    y.append(point['y'])
                    t.append(point['time'])
            if len(x) == 1:
                # constant interpolation
                fx, fy = lambda x: float(x), lambda y: float(y)
            else:
                # linear interpolation
                x, y = numpy.array(x), numpy.array(y)
                fx = interp1d(t, x, kind='linear')
                fy = interp1d(t, y, kind='linear')
            stroke_info['fx'] = fx
            stroke_info['fy'] = fy
            times.append(stroke_info)
        return times
'Pen-up' strokes are virtual strokes that were not drawn. It
            models the time when the user moved from one stroke to the next.