We are experiencing an issue with a user when they login. They are getting an invalid request error message. Their entire calendar is blank both standard and HTML versions. I know there are appointments there, if I hover over the calendar it says that there are 633 appointments.

I am going to attach the error message and what it throws in mailboxd.log for the user when they login. Let me know if there is anything we can try. We have reindexed the mailbox as well:

I am thinking there is a corrupt calendar item somewhere that is causing us grief.

Error Message:
Code:
method:	SearchRequest
msg:	invalid request: Could not parse DURATION string: -PT-1M
code:	service.INVALID_REQUEST
detail:	soap:Sender
trace:	btpool0-15826:1261495987224:b2e4a3c65d3ebbbb
request:	

Body: {
  SearchRequest: {
    _jsns: "urn:zimbraMail",
    calExpandInstEnd: 1261547999999,
    calExpandInstStart: 1260856800000,
    limit: "500",
    offset: 0,
    query: {
      _content: "inid:10"
     },
    sortBy: "none",
    types: "appointment"
   }
 },
Header: {
  context: {
    _jsns: "urn:zimbra",
    account: {
      _content: "EMAIL",
      by: "name"
     },
    authToken: "(removed)",
    format: {
      type: "js"
     },
    sessionId: {
      _content: 12424796,
      id: 12424796
     },
    userAgent: {
      name: "ZimbraWebClient - FF3.0 (Linux)",
      version: "5.0.18_GA_3011.UBUNTU8_64"
     }
   }
 }
Mailboxd Logs
Code:
2009-12-22 09:37:35,026 WARN  [btpool0-15812] [name=EMAIL;aname=EMAIL;mid=3930;ip=172.16.0.65;ua=ZimbraWebClient - FF3.0 (Linux)/5.0.18_GA_3011.UBUNTU8_64;] calendar - 36401
com.zimbra.common.service.ServiceException: invalid request: Could not parse DURATION string: -PT-1M
ExceptionId:btpool0-15812:1261496255026:b2e4a3c65d3ebbbb
Code:service.INVALID_REQUEST
	at com.zimbra.common.service.ServiceException.INVALID_REQUEST(ServiceException.java:260)
	at com.zimbra.cs.mailbox.calendar.ParsedDuration.parse(ParsedDuration.java:311)
	at com.zimbra.cs.mailbox.calendar.Alarm.decodeMetadata(Alarm.java:673)
	at com.zimbra.cs.mailbox.calendar.Invite.decodeMetadata(Invite.java:723)
	at com.zimbra.cs.mailbox.CalendarItem.decodeMetadata(CalendarItem.java:644)
	at com.zimbra.cs.mailbox.MailItem.decodeMetadata(MailItem.java:2600)
	at com.zimbra.cs.mailbox.MailItem.<init>(MailItem.java:489)
	at com.zimbra.cs.mailbox.CalendarItem.<init>(CalendarItem.java:152)
	at com.zimbra.cs.mailbox.Appointment.<init>(Appointment.java:69)
	at com.zimbra.cs.mailbox.MailItem.constructItem(MailItem.java:1148)
	at com.zimbra.cs.mailbox.Mailbox.getItem(Mailbox.java:2207)
	at com.zimbra.cs.mailbox.Mailbox.getItemFromUnderlyingData(Mailbox.java:2190)
	at com.zimbra.cs.index.CalendarItemHit.<init>(CalendarItemHit.java:69)
	at com.zimbra.cs.index.ZimbraQueryResultsImpl.getAppointmentHit(ZimbraQueryResultsImpl.java:162)
	at com.zimbra.cs.index.ZimbraQueryResultsImpl.getZimbraHit(ZimbraQueryResultsImpl.java:261)
	at com.zimbra.cs.index.DBQueryOperation.peekNext(DBQueryOperation.java:691)
	at com.zimbra.cs.index.QueryOperation.hasNext(QueryOperation.java:156)
	at com.zimbra.cs.index.ItemPreloadingGrouper.bufferHits(ItemPreloadingGrouper.java:76)
	at com.zimbra.cs.index.BufferingResultsGrouper.peekNext(BufferingResultsGrouper.java:75)
	at com.zimbra.cs.index.UngroupedQueryResults.peekNext(UngroupedQueryResults.java:57)
	at com.zimbra.cs.index.FilteredQueryResults.peekNext(FilteredQueryResults.java:109)
	at com.zimbra.cs.index.FilteredQueryResults.hasNext(FilteredQueryResults.java:86)
	at com.zimbra.cs.index.ResultsPager.hasNext(ResultsPager.java:114)
	at com.zimbra.cs.service.mail.Search.putHits(Search.java:193)
	at com.zimbra.cs.service.mail.Search.handle(Search.java:124)
	at com.zimbra.soap.SoapEngine.dispatchRequest(SoapEngine.java:429)
	at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.java:286)
	at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.java:160)
	at com.zimbra.soap.SoapServlet.doPost(SoapServlet.java:275)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
	at com.zimbra.cs.servlet.ZimbraServlet.service(ZimbraServlet.java:187)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
	at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:81)
	at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:129)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:716)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:406)
	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.handler.rewrite.RewriteHandler.handle(RewriteHandler.java:350)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:313)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)