def make_output_docstrings(functions: dict, docstrings: dict) -> tuple:
    """
    Make the NumPy docstrings lines to write
    instead of the current plain docstring per function.

    Parameters
    ----------
    functions: dict
        Input types and default, and output type per function name.
    docstrings: dict
        Docstring Header, Parameters and Returns info per function name.
    Returns
    -------
    output_docstrings: dict
        Docstrings in NumPy format per function name.
    output_checks: dict
        function and output(s) of the functions that pose problem.
    """
    output_checks = {}
    output_docstrings = {}
    for function, attributes in functions.items():

        if function not in docstrings:
            continue

        output_docstrings[function] = '    """\n'

        header = docstrings[function]['header']
        for h in header:
            output_docstrings[function] += '    %s\n' % h

        input_types_default = attributes['input_types_default']
        params = docstrings[function]['params']
        if params:
            output_docstrings[function] += '\n    Parameters\n    %s\n' % ('-' * 10)
        for param, param_text in params.items():
            if param in input_types_default and input_types_default[param][0]:
                output_docstrings[function] += '    %s : %s\n' % (param, input_types_default[param][0])
            else:
                output_docstrings[function] += '    %s\n' % param
            for p in param_text:
                output_docstrings[function] += '        %s\n' % p
            if param in input_types_default and input_types_default[param][1]:
                output_docstrings[function] += '        Default: %s\n' % input_types_default[param][1]

        output_names = attributes['returns']
        if output_names:
            output_types = attributes['output_types']
            output_docstrings[function] += '\n    Returns\n    %s\n' % ('-'*7)
            returns = docstrings[function]['return']

            if len(output_names) != len(output_types):
                if len(output_types) == 1:
                    output_docstrings[function] += '    Number of items in %s : %s\n' % (output_types[0],
                                                                                       len(output_names))
                for ret, ret_text in returns.items():
                    output_docstrings[function] += '    %s\n' % ret
                    for r in ret_text:
                        output_docstrings[function] += '        %s\n' % r
            else:
                for odx, output_name in enumerate(output_names):
                    if output_name in returns:
                        if output_types:
                            if len(output_names) == len(output_types):
                                output_docstrings[function] += '    %s : %s\n' % (output_name, output_types[odx])
                            else:
                                output_docstrings[function] += '    %s\n' % output_name
                        else:
                            output_docstrings[function] += '    %s\n' % output_name
                        for r in returns[output_name]:
                            output_docstrings[function] += '        %s\n' % r
                    else:
                        output_checks.setdefault(function, []).append(output_name)

        output_docstrings[function] += '    """\n'

    return output_docstrings, output_checks