     self.define(Procedure("jiffies-per-second", self.jiffiesPerSecond))
     self.define(Procedure("time-zone", self.timeZone))
     self.define(Procedure("seconds-from-gmt", self.secondsFromGmt))
+    self.define(Procedure("date-time", self.dateTime))
     self.define(Procedure("seconds->date-time", self.secondsToDateTime))
     self.define(Procedure("date-time->seconds", self.dateTimeToSeconds))
     self.define(Procedure("date-time->string", self.dateTimeToString))
     self.define(Procedure("string->date-time", self.stringToDateTime))
+    self.define(Procedure("week-number->seconds", self.weekNumberToSeconds))
     self.define(Procedure("features", self.features))
     self.define(Procedure("implementation-name", self.implementationName))
     self.define(Procedure("implementation-version", self.implementationVersion))

      return .false
    }
    return self.getDateComponents(date, tzone)
  }

  private func getDateComponents(_ date: Date, _ tz: TimeZone) -> Expr {

    return .fixnum(Int64(tzone.secondsFromGMT()))
  }

  private func dateTime(args: Arguments) throws -> Expr {
    var spec = Expr.null
    for arg in args.reversed() {
      spec = .pair(arg, spec)
    }
    guard let (date, tzone) = self.getDate(spec, TimeZone.current) else {
      throw RuntimeError.eval(.invalidDateTime, spec)
    }
    return self.getDateComponents(date, tzone)
  }

  private func secondsToDateTime(_ seconds: Expr, _ timeZone: Expr?) throws -> Expr {
    guard let tzone = self.getTimeZone(timeZone) else {
      throw RuntimeError.eval(.invalidTimeZone, timeZone ?? .false)
