program def rotlist, rclass
*! NJC 1.1.0 6 June 2000
* NJC 1.0.0 26 Apr 2000
	version 6.0
	gettoken list 0 : 0, parse(",")
	if "`list'" == "" | "`list'" == "," {
		di in r "nothing in list"
		exit 198
	}

	syntax , Rot(int) [ Global(str) Noisily ]

	if length("`global'") > 8 {
		di in r "global name must be <=8 characters"
		exit 198
	}

	local n : word count `list'
	local rot = mod(`rot', `n')

	if `rot' == 0 {
		local newlist "`list'"
	}
	else {
		tokenize `list'

		local i = `rot' + 1
		while `i' <= `n' {
			local newlist "`newlist'``i'' "
			local i = `i' + 1
		}

		local i = 1
		while `i' <= `rot' {
			local newlist "`newlist'``i'' "
			local i = `i' + 1
		}
	}

	if "`noisily'" != "" { di "`newlist'" }
	if "`global'" != "" { global `global' "`newlist'" }
	return local list `newlist'
end