<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns1:informationTable xmlns:ns1="http://www.sec.gov/edgar/document/thirteenf/informationtable">
	<ns1:infoTable>
		<ns1:nameOfIssuer>Abbott Laboratories</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>002824100</ns1:cusip>
		<ns1:value>52173898</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>393320</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>350000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>43320</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>AbbVie</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>00287Y109</ns1:cusip>
		<ns1:value>150264811</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>717186</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>700000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>17186</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Accenture, Class A</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>G1151C101</ns1:cusip>
		<ns1:value>3374401</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>10814</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>3280</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>7534</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Adobe</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>00724F101</ns1:cusip>
		<ns1:value>130998507</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>341560</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>326500</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>15060</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Advanced Micro Devices</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>007903107</ns1:cusip>
		<ns1:value>88785340</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>864175</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>863950</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>225</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Agilent Technologies</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>00846U101</ns1:cusip>
		<ns1:value>86067333</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>735744</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>732900</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2844</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Agnico-Eagle Mines</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>008474108</ns1:cusip>
		<ns1:value>3078410</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>28396</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>6150</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>22246</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Air Products &amp; Chemicals</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>009158106</ns1:cusip>
		<ns1:value>32716950</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>110935</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>110000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>935</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Alcon</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>H01301128</ns1:cusip>
		<ns1:value>1311458</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>13815</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>13220</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>595</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Alphabet inc., C</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>02079K107</ns1:cusip>
		<ns1:value>270903</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1734</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1734</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Alphabet, Class A</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>02079K305</ns1:cusip>
		<ns1:value>221420820</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1431847</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1381130</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>50717</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Amazon.com</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>023135106</ns1:cusip>
		<ns1:value>5517350</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>28999</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>26980</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2019</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Amgen</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>031162100</ns1:cusip>
		<ns1:value>35554086</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>114120</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>113945</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>175</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Aon PLC</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>G0403H108</ns1:cusip>
		<ns1:value>793790</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1989</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1989</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Apple</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>037833100</ns1:cusip>
		<ns1:value>468461371</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>2108951</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1989983</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>118968</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Argan, Inc.</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>04010E109</ns1:cusip>
		<ns1:value>332122</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>2532</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2532</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>ASML Holding NY</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>N07059210</ns1:cusip>
		<ns1:value>212174126</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>320200</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>318665</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1535</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>AstraZeneca ADS</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>046353108</ns1:cusip>
		<ns1:value>120252983</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1636095</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1605500</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>30595</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>AutoZone</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>053332102</ns1:cusip>
		<ns1:value>154974256</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>40646</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>40060</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>586</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Barrick Gold</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>067901108</ns1:cusip>
		<ns1:value>3218506</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>165561</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>164000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1561</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>BHP Biliton ADR</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>088606108</ns1:cusip>
		<ns1:value>576073</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>11868</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>8250</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>3618</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Boston Scientific</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>101137107</ns1:cusip>
		<ns1:value>2673824</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>26505</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>24500</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2005</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Broadcom Ltd</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>11135F101</ns1:cusip>
		<ns1:value>256221478</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1530320</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1488500</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>41820</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Camden Property Trust</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>133131102</ns1:cusip>
		<ns1:value>665312</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>5440</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>900</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>4540</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Cameco Corp</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>13321L108</ns1:cusip>
		<ns1:value>400775</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>9737</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>9737</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Canadian National Railway</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>136375102</ns1:cusip>
		<ns1:value>37424640</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>384000</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>384000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>0</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Canadian Pacific Kansas City Ltd</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>13646K108</ns1:cusip>
		<ns1:value>404971</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>5768</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>5768</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>0</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Chevron Corporation</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>166764100</ns1:cusip>
		<ns1:value>200748</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1200</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1200</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Chubb</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>H1467J104</ns1:cusip>
		<ns1:value>957308</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>3170</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>2810</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>360</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Church &amp; Dwight</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>171340102</ns1:cusip>
		<ns1:value>131236748</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1192086</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1171300</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>20786</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Cisco Systems</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>17275R102</ns1:cusip>
		<ns1:value>107417671</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1740685</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1684050</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>56635</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Colgate-Palmolive</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>194162103</ns1:cusip>
		<ns1:value>45931740</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>490200</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>490000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>200</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Comfort Systems USA</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>199908104</ns1:cusip>
		<ns1:value>790192</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>2451</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2451</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Confluent Inc</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>20717M103</ns1:cusip>
		<ns1:value>203928</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>8700</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>8700</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>ConocoPhillips</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>20825C104</ns1:cusip>
		<ns1:value>2067214</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>19684</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>800</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>18884</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Corteva</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>22052L104</ns1:cusip>
		<ns1:value>1602575</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>25466</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>18780</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>6686</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Costco Wholesale</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>22160K105</ns1:cusip>
		<ns1:value>4125492</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>4362</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>3509</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>853</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>CSW Industrials, Inc.</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>126402106</ns1:cusip>
		<ns1:value>1006036</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>3451</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>3451</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Dominion Energy</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>25746U109</ns1:cusip>
		<ns1:value>687699</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>12265</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>8500</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>3765</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Dynavax Technologies Corp</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>268158201</ns1:cusip>
		<ns1:value>176561</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>13613</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>13613</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Eaton Corp PLC</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>G29183103</ns1:cusip>
		<ns1:value>55136094</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>202833</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>187245</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>15588</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Ecolab</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>278865100</ns1:cusip>
		<ns1:value>380280</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1500</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1500</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>0</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Edwards Lifesciences</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>28176E108</ns1:cusip>
		<ns1:value>971957</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>13410</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>13410</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Elastic NV</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>N14506104</ns1:cusip>
		<ns1:value>225601</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>2532</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2532</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Eli Lilly</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>532457108</ns1:cusip>
		<ns1:value>496170388</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>600756</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>593790</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>6966</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>EMCOR Group</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>29084Q100</ns1:cusip>
		<ns1:value>422117</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1142</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>700</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>442</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Emerson Electric</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>291011104</ns1:cusip>
		<ns1:value>1403502</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>12801</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>12801</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Enphase Energy</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>29355A107</ns1:cusip>
		<ns1:value>404256</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>6515</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>4000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2515</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Equinix</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>29444U700</ns1:cusip>
		<ns1:value>775397</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>951</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>110</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>841</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Equity Residential Property Trust</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>29476L107</ns1:cusip>
		<ns1:value>622030</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>8690</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1430</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>7260</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Exponent</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>30214U102</ns1:cusip>
		<ns1:value>1508608</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>18611</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>18611</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Fastenal</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>311900104</ns1:cusip>
		<ns1:value>1407067</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>18144</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1745</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>16399</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Ferguson Enterprises Inc</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>31488V107</ns1:cusip>
		<ns1:value>38107982</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>237833</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>223810</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>14023</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>First Solar</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>336433107</ns1:cusip>
		<ns1:value>772867</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>6113</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>6113</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Floor &amp; Decor Holdings, Inc. Class</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>339750101</ns1:cusip>
		<ns1:value>560071</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>6960</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>900</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>6060</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Fortinet Inc.</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>34959E109</ns1:cusip>
		<ns1:value>1161858</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>12070</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>11870</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>200</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Fortune Brands Innovations</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>34964C106</ns1:cusip>
		<ns1:value>225256</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>3700</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1350</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2350</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Gartner</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>366651107</ns1:cusip>
		<ns1:value>75822253</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>180641</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>179900</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>741</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>General Mills</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>370334104</ns1:cusip>
		<ns1:value>410698</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>6869</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>3800</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>3069</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Genuine Parts</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>372460105</ns1:cusip>
		<ns1:value>45725932</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>383800</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>382000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1800</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>GlaxoSmithKline ADS</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>37733W204</ns1:cusip>
		<ns1:value>877461</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>22650</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>19900</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2750</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Home Depot</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>437076102</ns1:cusip>
		<ns1:value>12562910</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>34279</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>31750</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2529</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Illinois Tool Works</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>452308109</ns1:cusip>
		<ns1:value>76417833</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>308124</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>300000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>8124</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Infosys ADS</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>456788108</ns1:cusip>
		<ns1:value>3037311</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>166428</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>163200</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>3228</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>International Business Machines</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>459200101</ns1:cusip>
		<ns1:value>577886</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>2324</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2324</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Intuit</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>461202103</ns1:cusip>
		<ns1:value>181239410</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>295183</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>285600</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>9583</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Iovance Biotherapeutics Inc</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>462260100</ns1:cusip>
		<ns1:value>68441</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>20553</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>20553</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Itron</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>465741106</ns1:cusip>
		<ns1:value>1045610</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>9981</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>9981</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Jabil Inc</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>466313103</ns1:cusip>
		<ns1:value>3891602</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>28600</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>28600</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>0</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Johnson &amp; Johnson</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>478160104</ns1:cusip>
		<ns1:value>30281223</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>182593</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>165000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>17593</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Johnson Controls International</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>G51502105</ns1:cusip>
		<ns1:value>211660874</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>2642128</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>2602750</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>39378</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>JP Morgan Chase</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>46625H100</ns1:cusip>
		<ns1:value>712106</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>2903</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1200</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1703</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Kenvue Inc</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>49177J102</ns1:cusip>
		<ns1:value>41212052</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1718601</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1675000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>43601</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Keysight Technologies</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>49338L103</ns1:cusip>
		<ns1:value>128260482</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>856383</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>851450</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>4933</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Kimberly-Clark</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>494368103</ns1:cusip>
		<ns1:value>42827277</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>301134</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>300000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1134</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Limbach Holdings, Inc</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>53263P105</ns1:cusip>
		<ns1:value>584143</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>7844</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>7844</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Lincoln Electric Holdings</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>533900106</ns1:cusip>
		<ns1:value>53017576</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>280279</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>268920</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>11359</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Linde</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>G54950103</ns1:cusip>
		<ns1:value>62832065</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>134937</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>134935</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Lowe's</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>548661107</ns1:cusip>
		<ns1:value>99636089</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>427201</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>407100</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>20101</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Lululemon Athletica</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>550021109</ns1:cusip>
		<ns1:value>849180</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>3000</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>3000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>0</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Mastercard, Class A</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>57636Q104</ns1:cusip>
		<ns1:value>3382997</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>6172</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>5631</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>541</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Matrix Service Company</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>576853105</ns1:cusip>
		<ns1:value>284473</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>22886</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>22886</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>McCormick &amp; Co</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>579780206</ns1:cusip>
		<ns1:value>46094917</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>560016</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>559288</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>728</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>MercadoLibre</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>58733R102</ns1:cusip>
		<ns1:value>4974719</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>2550</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>2535</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>15</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Merck &amp; Co</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>58933Y105</ns1:cusip>
		<ns1:value>13035216</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>145223</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>123000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>22223</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Meta Platforms Inc Cl A</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>30303M102</ns1:cusip>
		<ns1:value>2558462</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>4439</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>3650</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>789</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Microsoft</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>594918104</ns1:cusip>
		<ns1:value>417424671</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1111976</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1081138</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>30838</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Mid-America Apartment Communities</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>59522J103</ns1:cusip>
		<ns1:value>584854</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>3490</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>660</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2830</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Monolithic Power Systems</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>609839105</ns1:cusip>
		<ns1:value>938408</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1618</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1100</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>518</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Monster Beverage</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>61174X109</ns1:cusip>
		<ns1:value>1953573</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>33383</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>32200</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1183</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Moody's</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>615369105</ns1:cusip>
		<ns1:value>2335435</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>5015</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>5015</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Motorola Solutions</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>620076307</ns1:cusip>
		<ns1:value>3237605</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>7395</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>6900</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>495</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>NextEra Energy</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>65339F101</ns1:cusip>
		<ns1:value>1157279</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>16325</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>12025</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>4300</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>NICE Systems ADR</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>653656108</ns1:cusip>
		<ns1:value>2916434</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>18917</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>18120</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>797</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Nike, Class B</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>654106103</ns1:cusip>
		<ns1:value>6665400</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>105000</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>105000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>0</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Norfolk Southern</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>655844108</ns1:cusip>
		<ns1:value>965164</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>4075</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>4075</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Novartis ADS</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>66987V109</ns1:cusip>
		<ns1:value>35692106</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>320166</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>302200</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>17966</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Novo Nordisk ADS</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>670100205</ns1:cusip>
		<ns1:value>148932065</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>2144759</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>2068375</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>76384</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>NVIDIA</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>67066G104</ns1:cusip>
		<ns1:value>251709407</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>2322471</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>2242750</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>79721</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>NXP Semiconductors</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>N6596X109</ns1:cusip>
		<ns1:value>1189586</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>6259</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>2735</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>3524</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>O'Reilly Automotive</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>67103H107</ns1:cusip>
		<ns1:value>5452399</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>3806</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1460</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2346</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Oracle</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>68389X105</ns1:cusip>
		<ns1:value>133842630</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>957318</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>920425</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>36893</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Orange ADR</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>684060106</ns1:cusip>
		<ns1:value>258600</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>20000</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>20000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>0</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Palo Alto Networks Inc.</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>697435105</ns1:cusip>
		<ns1:value>1393958</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>8169</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>8169</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Parker Hannifin</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>701094104</ns1:cusip>
		<ns1:value>255297</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>420</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>420</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>0</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Phillips 66</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>718546104</ns1:cusip>
		<ns1:value>650493</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>5268</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1100</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>4168</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Potlatch</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>737630103</ns1:cusip>
		<ns1:value>570317</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>12640</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>2500</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>10140</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Procter &amp; Gamble</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>742718109</ns1:cusip>
		<ns1:value>157197964</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>922415</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>891450</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>30965</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Prologis Inc</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>74340W103</ns1:cusip>
		<ns1:value>1314315</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>11757</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>925</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>10832</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Public Storage International</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>74460D109</ns1:cusip>
		<ns1:value>2065400</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>6901</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>350</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>6551</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Qualcomm</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>747525103</ns1:cusip>
		<ns1:value>7666675</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>49910</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>32400</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>17510</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Quanta Services</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>74762E102</ns1:cusip>
		<ns1:value>2016918</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>7935</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>5000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2935</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Quimica y Minera Chile ADS</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>833635105</ns1:cusip>
		<ns1:value>1962940</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>49407</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>49000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>407</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Republic Services</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>760759100</ns1:cusip>
		<ns1:value>1752028</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>7235</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>950</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>6285</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Rio Tinto ADS</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>767204100</ns1:cusip>
		<ns1:value>4621053</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>76915</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>71900</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>5015</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Rockwell Automation</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>773903109</ns1:cusip>
		<ns1:value>77849894</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>301300</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>300000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1300</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Roper Technologies</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>776696106</ns1:cusip>
		<ns1:value>782962</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1328</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1328</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Ross Stores</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>778296103</ns1:cusip>
		<ns1:value>320753</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>2510</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1390</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1120</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>RxSight</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>78349D107</ns1:cusip>
		<ns1:value>242855</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>9618</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>9618</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Salesforce Inc.</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>79466L302</ns1:cusip>
		<ns1:value>1862687</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>6941</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>6941</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>SAP ADS</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>803054204</ns1:cusip>
		<ns1:value>4355976</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>16227</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>13780</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2447</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>ServiceNow</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>81762P102</ns1:cusip>
		<ns1:value>150362981</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>188865</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>187550</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1315</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Shell Plc</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>780259305</ns1:cusip>
		<ns1:value>278464</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>3800</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>3800</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>0</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>SK Telecom ADR</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>78440P306</ns1:cusip>
		<ns1:value>233860</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>11000</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>11000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>0</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Sony ADS</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>835699307</ns1:cusip>
		<ns1:value>507800</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>20000</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>20000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>0</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Southern Copper</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>84265V105</ns1:cusip>
		<ns1:value>4136820</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>44263</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>44263</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>0</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Stryker</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>863667101</ns1:cusip>
		<ns1:value>117050662</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>314441</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>304000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>10441</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Taiwan Semiconductor ADS</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>874039100</ns1:cusip>
		<ns1:value>354051274</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>2132839</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>2093566</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>39273</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>TE Connectivity</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>G87052109</ns1:cusip>
		<ns1:value>1909940</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>13515</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>3200</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>10315</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Telekomunikasi Indonesia ADS</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>715684106</ns1:cusip>
		<ns1:value>1237460</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>83782</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>83000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>782</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Texas Instruments</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>882508104</ns1:cusip>
		<ns1:value>47811521</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>266063</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>255100</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>10963</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>TJX Companies</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>872540109</ns1:cusip>
		<ns1:value>149919357</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1230865</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1176700</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>54165</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Tractor Supply</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>892356106</ns1:cusip>
		<ns1:value>746605</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>13550</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1900</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>11650</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Trane</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>G8994E103</ns1:cusip>
		<ns1:value>136000790</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>403659</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>400400</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>3259</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Trimble</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>896239100</ns1:cusip>
		<ns1:value>110995899</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1690722</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1665000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>25722</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Tyler Technologies</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>902252105</ns1:cusip>
		<ns1:value>2126725</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>3658</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>1200</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>2458</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Unilever ADS</ns1:nameOfIssuer>
		<ns1:titleOfClass>ADR</ns1:titleOfClass>
		<ns1:cusip>904767704</ns1:cusip>
		<ns1:value>36083906</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>605943</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>551800</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>54143</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Union Pacific</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>907818108</ns1:cusip>
		<ns1:value>55319848</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>234168</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>225665</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>8503</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>United Parcel Service, Cl B</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>911312106</ns1:cusip>
		<ns1:value>30232181</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>274863</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>260000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>14863</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>UnitedHealth Group</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>91324P102</ns1:cusip>
		<ns1:value>930180</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1776</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>390</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1386</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Verizon Communications</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>92343V104</ns1:cusip>
		<ns1:value>336118</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>7410</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>6000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1410</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Virtu Financial</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>928254101</ns1:cusip>
		<ns1:value>571800</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>15000</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>15000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>0</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Visa</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>92826C839</ns1:cusip>
		<ns1:value>479780</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1369</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>900</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>469</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>W.W. Grainger</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>384802104</ns1:cusip>
		<ns1:value>80952669</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>81950</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>80000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1950</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Waste Management</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>94106L109</ns1:cusip>
		<ns1:value>451676</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1951</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1951</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Watsco</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>942622200</ns1:cusip>
		<ns1:value>1658583</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>3263</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>3263</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Weyerhaeuser</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>962166104</ns1:cusip>
		<ns1:value>575030</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>19639</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>3400</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>16239</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Zoetis Inc.</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>98978V103</ns1:cusip>
		<ns1:value>1017702</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>6181</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>6000</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>181</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
	<ns1:infoTable>
		<ns1:nameOfIssuer>Zscaler</ns1:nameOfIssuer>
		<ns1:titleOfClass>Common Stock</ns1:titleOfClass>
		<ns1:cusip>98980G102</ns1:cusip>
		<ns1:value>277391</ns1:value>
		<ns1:shrsOrPrnAmt>
			<ns1:sshPrnamt>1398</ns1:sshPrnamt>
			<ns1:sshPrnamtType>SH</ns1:sshPrnamtType>
		</ns1:shrsOrPrnAmt>
		<ns1:investmentDiscretion>SOLE</ns1:investmentDiscretion>
		<ns1:otherManager>0</ns1:otherManager>
		<ns1:votingAuthority>
			<ns1:Sole>0</ns1:Sole>
			<ns1:Shared>0</ns1:Shared>
			<ns1:None>1398</ns1:None>
		</ns1:votingAuthority>
	</ns1:infoTable>
</ns1:informationTable>
