*! 1.0.0 NJC 12 March 2000
program define _ghmmss
        version 6.0

        gettoken type 0 : 0
        gettoken g    0 : 0
        gettoken eqs  0 : 0

        syntax varname(numeric) [if] [in] [, Round(numlist >0 max=1) Trim ]
        marksample touse, strok
        local type "str1" /* ignores type passed from -egen- */

        quietly {
		gen `type' `g' = ""
		tempvar wrk

		* hours
		gen `wrk' = int(`varlist'/ 3600)
		replace `g' = string(`wrk') + ":" if `touse' & `wrk'

		* minutes
		replace `wrk' = int(mod(`varlist', 3600) / 60)
replace `g' = `g' + cond(`wrk' < 10, "0", "") + string(`wrk') + ":" if `touse'

		* seconds
		replace `wrk' = mod(`varlist', 60)
		if "`round'" != "" { replace `wrk' = round(`wrk', `round') }
replace `g' = `g' + cond(`wrk' < 10, "0", "") + string(`wrk') if `touse'
		if "`trim'" != "" {
			local goon 1
			while `goon' {
count if `touse' & (substr(`g',1,1) == "0" | substr(`g',1,1) == ":") & `g' != "0"
				local goon = r(N)
				if `goon' {
replace `g' = substr(`g',2,.) if `touse' & (substr(`g',1,1) == "0" | substr(`g',1,1) == ":") & `g' != "0"
				}
			}
			compress `g'
		}
       }
end