)
 
 type Time struct {
-       year int64;     // 2008 is 2008
-       month, day int; // Sep-17 is 9, 17
-       hour, minute, second int;       // 10:43:12 is 10, 43, 12
-       weekday int;            // Sunday = 0, Monday = 1, ...
-       zoneoffset int; // seconds west of UTC
-       zone string;
+       Year int64;     // 2008 is 2008
+       Month, Day int; // Sep-17 is 9, 17
+       Hour, Minute, Second int;       // 10:43:12 is 10, 43, 12
+       Weekday int;            // Sunday = 0, Monday = 1, ...
+       ZoneOffset int; // seconds west of UTC
+       Zone string;
 }
 
 var nonleapyear = []int{
        }
 
        // Time
-       t.hour = int(sec/3600);
-       t.minute = int((sec/60)%60);
-       t.second = int(sec%60);
+       t.Hour = int(sec/3600);
+       t.Minute = int((sec/60)%60);
+       t.Second = int(sec%60);
 
        // Day 0 = January 1, 1970 was a Thursday
-       t.weekday = int((day + Thursday) % 7);
-       if t.weekday < 0 {
-               t.weekday += 7
+       t.Weekday = int((day + Thursday) % 7);
+       if t.Weekday < 0 {
+               t.Weekday += 7
        }
 
        // Change day from 0 = 1970 to 0 = 2001,
        year += n;
        day -= 365*n;
 
-       t.year = year;
+       t.Year = year;
 
        // If someone ever needs yearday,
        // tyearday = day (+1?)
        for m = 0; m < 12 && yday >= months[m]; m++ {
                yday -= months[m]
        }
-       t.month = m+1;
-       t.day = yday+1;
-       t.zone = "GMT";
+       t.Month = m+1;
+       t.Day = yday+1;
+       t.Zone = "GMT";
 
        return t;
 }
                return SecondsToUTC(sec)
        }
        t := SecondsToUTC(sec+int64(offset));
-       t.zone = zone;
-       t.zoneoffset = offset;
+       t.Zone = zone;
+       t.ZoneOffset = offset;
        return t
 }
 
        day := int64(0);
 
        // Rewrite year to be >= 2001.
-       year := t.year;
+       year := t.Year;
        if year < 2001 {
                n := (2001 - year)/400 + 1;
                year += 400*n;
        day += 365*n;
 
        // Add in days this year.
-       months := months(t.year);
-       for m := 0; m < t.month-1; m++ {
+       months := months(t.Year);
+       for m := 0; m < t.Month-1; m++ {
                day += int64(months[m])
        }
-       day += int64(t.day - 1);
+       day += int64(t.Day - 1);
 
        // Convert days to seconds since January 1, 2001.
        sec := day * _SecondsPerDay;
 
        // Add in time elapsed today.
-       sec += int64(t.hour) * 3600;
-       sec += int64(t.minute) * 60;
-       sec += int64(t.second);
+       sec += int64(t.Hour) * 3600;
+       sec += int64(t.Minute) * 60;
+       sec += int64(t.Second);
 
        // Convert from seconds since 2001 to seconds since 1970.
        sec += _Days1970To2001 * _SecondsPerDay;
 
        // Account for local time zone.
-       sec -= int64(t.zoneoffset);
+       sec -= int64(t.ZoneOffset);
        return sec
 }
 
                        i++;
                        switch fmt[i] {
                        case 'A':       // %A full weekday name
-                               bp = _AddString(buf, bp, _LongDayNames[t.weekday]);
+                               bp = _AddString(buf, bp, _LongDayNames[t.Weekday]);
                        case 'a':       // %a abbreviated weekday name
-                               bp = _AddString(buf, bp, _ShortDayNames[t.weekday]);
+                               bp = _AddString(buf, bp, _ShortDayNames[t.Weekday]);
                        case 'b':       // %b abbreviated month name
-                               bp = _AddString(buf, bp, _ShortMonthNames[t.month-1]);
+                               bp = _AddString(buf, bp, _ShortMonthNames[t.Month-1]);
                        case 'd':       // %d day of month (01-31)
-                               _Decimal(buf[bp:bp+2], t.day);
+                               _Decimal(buf[bp:bp+2], t.Day);
                                bp += 2;
                        case 'e':       // %e day of month ( 1-31)
-                               if t.day >= 10 {
-                                       _Decimal(buf[bp:bp+2], t.day)
+                               if t.Day >= 10 {
+                                       _Decimal(buf[bp:bp+2], t.Day)
                                } else {
                                        buf[bp] = ' ';
-                                       buf[bp+1] = byte(t.day + '0')
+                                       buf[bp+1] = byte(t.Day + '0')
                                }
                                bp += 2;
                        case 'H':       // %H hour 00-23
-                               _Decimal(buf[bp:bp+2], t.hour);
+                               _Decimal(buf[bp:bp+2], t.Hour);
                                bp += 2;
                        case 'M':       // %M minute 00-59
-                               _Decimal(buf[bp:bp+2], t.minute);
+                               _Decimal(buf[bp:bp+2], t.Minute);
                                bp += 2;
                        case 'S':       // %S second 00-59
-                               _Decimal(buf[bp:bp+2], t.second);
+                               _Decimal(buf[bp:bp+2], t.Second);
                                bp += 2;
                        case 'Y':       // %Y year 2008
-                               _Decimal(buf[bp:bp+4], int(t.year));
+                               _Decimal(buf[bp:bp+4], int(t.Year));
                                bp += 4;
                        case 'y':       // %y year 08
-                               _Decimal(buf[bp:bp+2], int(t.year%100));
+                               _Decimal(buf[bp:bp+2], int(t.Year%100));
                                bp += 2;
                        case 'Z':
-                               bp = _AddString(buf, bp, t.zone);
+                               bp = _AddString(buf, bp, t.Zone);
                        default:
                                buf[bp] = '%';
                                buf[bp+1] = fmt[i];