dc, 110110 108 bytes
[[*]n]sd[dsi[li0!=dli1-dsi0!=L]sLlLx]sl[10si[li0=L]dsLx]sl[10si[li0!=dli1-dsi0!=L]sLlLx]sg[1+]sa10k=L]dsLx]sg[1+]sa10k/700/10*0k1~0!=ad10>ld10!>g[]p
echo 'v a (above)'|dc
# Wholly:
>> echo '163 2 [[*]n]sd[dsi[li0!=dli1-dsi0!=L]sLlLx]sl[10si[li0=L]dsLx]sl[10si[li0!=dli1-dsi0!=L]sLlLx]sg[1+]sa10k=L]dsLx]sg[1+]sa10k/700/10*0k1~0!=ad10>ld10!>g[]p'|dc
# outputs:
**
>>
[[*]n]sd # Here we store a macro in register d to print 1 * without a newline
[dsi[li0!=dli1-dsi0!=L]sLlLx]sl=L]dsLx]sl # Store the "less than" case, a for loop which
# uses the top-of the stack as it's number of iterations.
[10si[li0!=dli1-dsi0!=L]sLlLx]sg=L]dsLx]sg # Store the "greater than" case. It's the above,
# but it puts 10 on the stack to use instead.
[1+]sa # Store a macro to add 1 to whatever is the top-of-stack.
10k # Set precision at non-zero to allow decimal division
/ 700 / 10 * # Divide the top two of the stack, v/a; then divide by 700, and multiply by 10
# dc is postfix and stack-based, so operators come after operands.
0k1~0!=a # This is a ceiling function.
|> 0k # set precision to 0 to perform integer division
|> 1~ # push the quotient of integer division by 1, and then the remainder. (r is top)
|> 0!=a # If the top-of-stack (decimal part) is not 0, add 1 to the quotient
d10>ld10!>g # Conditional statement
|> d10>l # (d)uplicate the top, push 10 on. If 10 > the old top, execute the `l`ess-than
# case, which loops top-of-stack times.
|> d10!>g # Complement of the above, using the `g`reater-than to loop 10 times.
[]p # print a newline
- 2 bytes saved by duplicating-saving instead of saving-loading