def lfsr_next_one_seed(seed_iter, min_value_shift):
    """High-quality seeding for LFSR generators.
    
    The LFSR generator components discard a certain number of their lower bits
    when generating each output. The significant bits of their state must not
    all be zero. We must ensure that when seeding the generator.
    
    In case generators are seeded from an incrementing input (such as a system
    timer), and between increments only the lower bits may change, we would
    also like the lower bits of the input to change the initial state, and not
    just be discarded. So we do basic manipulation of the seed input value to
    ensure that all bits of the seed input affect the initial state.
    """
    try:
        seed = seed_iter.next()
    except StopIteration:
        return 4294967295
    else:
        if seed is None:
            return 4294967295
        else:
            seed = int(seed) & 4294967295
            working_seed = (seed ^ seed << 16) & 4294967295
            min_value = 1 << min_value_shift
            if working_seed < min_value:
                working_seed = seed << 24 & 4294967295
                if working_seed < min_value:
                    working_seed ^= 4294967295
            return working_seed
