Thanks again, so much!
I tried the Yahoo Finance route for the annual returns. There's a few tricks. One must use the Adj Close to get the benefit of dividends (for stocks which issue dividends) which are part of the Morningstar "total returns". Even then, they don't seem to come out quite right. Example: IBM on Morningstar, 2018: -21.86, 2017: -4.02. Using Yahoo Finance 2018: -22.6 (109.75/141.72), 2017: -3.98 (141.72/147.60). May not seem like much of a difference but other cases are worse.
Differences for total returns might be because of different ways of calculating adjusted prices and not necessarily bad data.
Yahoo says it uses a standard way of adjusting close prices:
https://help.yahoo.com/kb/SLN28256.html
What is the adjusted close?
Adjusted close is the closing price after adjustments for all applicable splits and dividend distributions. Data is adjusted using appropriate split and dividend multipliers, adhering to Center for Research in Security Prices (CRSP) standards.
So does Morningstar:
http://www.morningstar.com/InvGlossary/total-return.aspx
Total Return
Expressed in percentage terms, Morningstar's calculation of total return is determined by taking the change in price, reinvesting, if applicable, all income and capital gains distributions during the period, and dividing by the starting price.
Adjusted data from yahoo.com (raw open, high, and low prices adjusted by multiplying by adjusted_close / actual_close):
<TICKER>,<DTYYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOLUME>,<UNADJCLOSE>,<UNADJVOLUME>
IBM,20161230,150000,148.003590,148.234786,147.167711,147.603439,2625720.956387,165.990005,2952800
IBM,20171229,150000,142.410076,142.918125,141.717285,141.717285,3073312.378244,153.419998,3327100
IBM,20181231,150000,109.420444,110.405253,108.541832,109.748711,4810907.775074,113.669998,4982800
2018 return == 109.748711 / 141.717285 * 100 - 100 == -22.5579921320113 percent
2017 return == 141.717285 / 147.603439 * 100 - 100 == -3.98781630013377 percent
Adjusted data from quotemedia.com:
<TICKER>,<DTYYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOLUME>,<UNADJCLOSE>,<UNADJVOLUME>
IBM,20161230,150000,148.003855,148.235055,147.167976,147.603700,2625747.909226,165.99,2952825
IBM,20171229,150000,142.410191,142.918238,141.712781,141.717400,3073302.823711,153.42,3327087
IBM,20181231,150000,109.420529,110.405342,108.542017,109.748800,4810868.144137,113.67,4982755
2018 return == 109.748800 / 141.717400 * 100 - 100 == -22.5579921731559 percent
2017 return == 141.717400 / 147.603700 * 100 - 100 == -3.98790816219376 percent
https://www.macrotrends.net/stocks/charts/IBM/ibm/stock-price-history
IBM Historical Annual Stock Price Data
Year Average Stock Price Year Open Year High Year Low Year Close Annual % Change
2018 138.9086 145.8187 159.8759 106.3168 112.3457 -22.54%
2017 146.1554 152.1429 166.8903 130.7590 145.0341 -3.98%
So these three web sites more-or-less agree with each other and disagree with morningstar.com.