def make_palindrome(n: int, base: int = 10, odd_length: bool = False) -> int:
    """Forms a palindrome in the given base, using a positive integer seed.

    Args:
        n: A positive integer value.
        base: The base in which the resulting number will be a palindrome. Must
            be at least 2.
        odd_length: If ``True``, the resulting palindrome will contain
            ``2 * count_digits(n, base) - 1`` digits. If ``False``, the
            resulting palindrome will contain ``2 * count_digits(n, base)``
            digits.

    Returns:
        An integer containing an odd (if ``odd_length`` is ``True``) or even
        (if ``odd_length`` is ``False``) number of digits which read the same
        forward and backward in the given base.

    References:
        Adapted from https://projecteuler.net/overview=036.
    """

    # set beginning of palindrome to be the digits of n
    palindrome = n

    # remove final digit of n if palindrome should be odd in length
    if odd_length:
        n //= base

    # append each digit of n to palindrome in reverse order
    while n != 0:
        n, digit = divmod(n, base)
        palindrome = (palindrome * base) + digit

    return palindrome