diff --git a/SleepyHead.depend b/SleepyHead.depend
index bf3e7483..0dac278a 100644
--- a/SleepyHead.depend
+++ b/SleepyHead.depend
@@ -7826,7 +7826,7 @@
 1305881106 /home/mark/projects/git/sleepyhead/SleepyHeadApp.h
 	<wx/app.h>
 
-1306490414 /home/mark/projects/git/sleepyhead/SleepyHeadMain.h
+1306502006 /home/mark/projects/git/sleepyhead/SleepyHeadMain.h
 	"SleepyHeadApp.h"
 	"GUIFrame.h"
 	"sleeplib/machine.h"
@@ -7866,11 +7866,11 @@
 	<map>
 	"tinyxml/tinyxml.h"
 
-1306495853 /home/mark/projects/git/sleepyhead/graphs/graph.h
+1306499970 /home/mark/projects/git/sleepyhead/graphs/graph.h
 	<sleeplib/machine.h>
 	<list>
 
-1306496086 /home/mark/projects/git/sleepyhead/version.h
+1306505200 /home/mark/projects/git/sleepyhead/version.h
 
 1306415077 /home/mark/projects/git/sleepyhead/libs/sleeplib/prs1_loader.h
 	"machine.h"
@@ -7887,7 +7887,7 @@
 	"preferences.h"
 	"tinyxml/tinyxml.h"
 
-1306495914 source:/home/mark/projects/git/sleepyhead/SleepyHeadMain.cpp
+1306502588 source:/home/mark/projects/git/sleepyhead/SleepyHeadMain.cpp
 	"wx_pch.h"
 	"version.h"
 	<wx/app.h>
@@ -7901,7 +7901,7 @@
 	"SleepyHeadMain.h"
 	"sleeplib/profiles.h"
 
-1306495959 source:/home/mark/projects/git/sleepyhead/graphs/graph.cpp
+1306502417 source:/home/mark/projects/git/sleepyhead/graphs/graph.cpp
 	<wx/settings.h>
 	<wx/dcbuffer.h>
 	<wx/log.h>
diff --git a/SleepyHeadMain.cpp b/SleepyHeadMain.cpp
index 94b58939..360e4188 100644
--- a/SleepyHeadMain.cpp
+++ b/SleepyHeadMain.cpp
@@ -207,25 +207,36 @@ void SleepyHeadFrame::OnViewMenuSummary( wxCommandEvent& event )
 Summary::Summary(wxWindow *win)
 :SummaryPanel(win)
 {
+    const int days_shown=90;
     machine=NULL;
-    ahidata=new HistoryData(machine,30);
+    AddData(ahidata=new HistoryData(machine,days_shown));
     AHI=new gGraphWindow(ScrolledWindow,-1,wxT("AHI"),wxPoint(0,0), wxSize(400,200), wxNO_BORDER);
     AHI->SetMargins(10,15,60,80);
     AHI->AddLayer(new gBarChart(ahidata,wxRED));
     fgSizer->Add(AHI,1,wxEXPAND);
 
-    pressure=new HistoryCodeData(machine,CPAP_PressureAverage,30);
+    AddData(pressure=new HistoryCodeData(machine,CPAP_PressureAverage,days_shown));
     PRESSURE=new gGraphWindow(ScrolledWindow,-1,wxT("Pressure"),wxPoint(0,0), wxSize(400,200), wxNO_BORDER);
     PRESSURE->SetMargins(10,15,60,80);
     PRESSURE->AddLayer(new gBarChart(pressure,wxBLUE));
     fgSizer->Add(PRESSURE,1,wxEXPAND);
 
-    leak=new HistoryCodeData(machine,CPAP_LeakAverage,30);
+    AddData(leak=new HistoryCodeData(machine,CPAP_LeakAverage,days_shown));
     LEAK=new gGraphWindow(ScrolledWindow,-1,wxT("Mask Leak"),wxPoint(0,0), wxSize(400,200), wxNO_BORDER);
     LEAK->SetMargins(10,15,60,80);
     LEAK->AddLayer(new gBarChart(leak,wxYELLOW));
     fgSizer->Add(LEAK,1,wxEXPAND);
 
+    AddData(usage=new UsageHistoryData(machine,days_shown,UHD_Hours));
+    AddData(waketime=new UsageHistoryData(machine,days_shown,UHD_Waketime));
+    AddData(bedtime=new UsageHistoryData(machine,days_shown,UHD_Bedtime));
+
+    USAGE=new gGraphWindow(ScrolledWindow,-1,wxT("Usage"),wxPoint(0,0), wxSize(400,200), wxNO_BORDER);
+    USAGE->SetMargins(10,15,60,80);
+    USAGE->AddLayer(new gBarChart(usage,wxGREEN));
+    fgSizer->Add(USAGE,1,wxEXPAND);
+
+
     RefreshData();
 
 }
@@ -241,16 +252,20 @@ void Summary::RefreshData()
         if (vm.size()>=1) {
             machine=vm[0];
         } else machine=NULL;
-        ahidata->SetMachine(machine);
-        pressure->SetMachine(machine);
-        leak->SetMachine(machine);
+        for (auto h=Data.begin();h!=Data.end();h++) {
+            (*h)->SetMachine(machine);
+        }
     }
-    ahidata->Update();
-    pressure->Update();
-    leak->Update();
+    for (auto h=Data.begin();h!=Data.end();h++) {
+        (*h)->Update();
+    }
+
     wxString submodel=_("Unknown Model");
     double ahi=ahidata->GetAverage();
     double avp=pressure->GetAverage();
+    double bt=fmod(bedtime->GetAverage(),12.0);
+    double ua=usage->GetAverage();
+    double wt=fmod(bt+ua,12.0);
 
     wxString html=wxT("<html><body leftmargin=0 rightmargin=0 topmargin=0 marginwidth=0 marginheight=0><table cellspacing=2 cellpadding=0>\n");
 
@@ -259,12 +274,17 @@ void Summary::RefreshData()
         if (machine->properties.find(wxT("SubModel"))!=machine->properties.end())
             submodel=wxT(" <br>\n ")+machine->properties[wxT("SubModel")];
         html=html+wxT("<tr><td colspan=2 align=center><b>")+machine->properties[wxT("Brand")]+wxT("</b> <br/>")+machine->properties[wxT("Model")]+wxT("&nbsp;")+machine->properties[wxT("ModelNumber")]+submodel+wxT("</td></tr>\n");
-        //html=html+wxT("<tr><td colspan=2 align=center>")+_("Serial")+wxT(" ")+machine->properties[wxT("Serial")]+wxT("</td></tr>");
+        html=html+wxT("<tr><td colspan=2 align=center>")+_("Firmware")+wxT(" ")+machine->properties[wxT("SoftwareVersion")]+wxT("</td></tr>");
         html=html+wxT("<tr><td>&nbsp;</td><td>&nbsp;</td></tr>\n");
         html=html+wxT("<tr><td colspan=2 align=left><i>")+_("Indice Averages")+wxT("</i></td></tr>\n");
         html=html+wxT("<tr><td><b>")+_("AHI")+wxT("</b></td><td>")+wxString::Format(wxT("%0.2f"),ahi)+wxT("</td></tr>\n");
         html=html+wxT("<tr><td><b>")+_("Pressure")+wxT("</b></td><td>")+wxString::Format(wxT("%0.2fcmH2O"),avp)+wxT("</td></tr>\n");
         html=html+wxT("<tr><td><b>")+_("Mask Leaks")+wxT("</b></td><td>")+wxString::Format(wxT("%0.2f"),leak->GetAverage())+wxT("</td></tr>\n");
+        html=html+wxT("<tr><td>&nbsp;</td><td>&nbsp;</td></tr>\n");
+
+        html=html+wxT("<tr><td><b>")+_("Bedtime")+wxT("</b></td><td>")+wxString::Format(wxT("%02.0f:%02i"),bt,int(bt*60) % 60)+wxT("</td></tr>\n");
+        html=html+wxT("<tr><td><b>")+_("Waketime")+wxT("</b></td><td>")+wxString::Format(wxT("%02.0f:%02i"),wt,int(wt*60) % 60)+wxT("</td></tr>\n");
+        html=html+wxT("<tr><td><b>")+_("Hours/Night")+wxT("</b></td><td>")+wxString::Format(wxT("%02.0f:%02i"),ua,int(ua*60)%60)+wxT("</td></tr>\n");
         html=html+wxT("</table>");
     } else {
         html=html+_("Please import some data.");
@@ -323,7 +343,6 @@ Daily::Daily(wxWindow *win)
 
     AddData(frw=new FlowData());
     FRW=new gGraphWindow(ScrolledWindow,-1,wxT("Flow Rate"),wxPoint(0,0), wxSize(600,150), wxNO_BORDER);
-  //  FRW->SetMargins(10,15,25,80);
 
     AddData(flags[0]=new FlagData(CPAP_CSR,7,1,0));
     AddData(flags[1]=new FlagData(CPAP_ClearAirway,6));
@@ -351,12 +370,11 @@ Daily::Daily(wxWindow *win)
     SF->SetMargins(10,15,20,80);
 
     SF->LinkZoom(FRW);
-    //SF->LinkZoom(PRD);
+    //SF->LinkZoom(PRD); // Uncomment to link in more graphs
     //SF->LinkZoom(LEAK);
 
     const int sfc=9;
 
-
     SF->AddLayer(new gFlagsLine(flags[9],wxDARK_GREEN,wxT("U0E"),8,sfc));
     SF->AddLayer(new gFlagsLine(flags[8],wxRED,wxT("VS2"),6,sfc));
     SF->AddLayer(new gFlagsLine(flags[6],wxYELLOW,wxT("RE"),7,sfc));
@@ -366,16 +384,6 @@ Daily::Daily(wxWindow *win)
     SF->AddLayer(new gFlagsLine(flags[2],wxAQUA,wxT("OA"),2,sfc));
     SF->AddLayer(new gFlagsLine(flags[1],wxPURPLE,wxT("CA"),1,sfc));
     SF->AddLayer(new gFlagsLine(flags[0],wxGREEN2,wxT("CSR"),0,sfc));
-    //l=new gBarChart(graphdata,wxHORIZONTAL);
-    //graph->AddLayer(l);
-    //graph->SetData(graphdata);
-    /*l=new gBarChart(wxHORIZONTAL);
-    graph2->AddLayer(l); */
-    //m_mgr2.AddPane(graph,wxLEFT);
-    //wxAuiPaneInfo &z=m_mgr2.GetPane(graph);
-    //z.Caption(graph->GetTitle());
-    //z.CloseButton(false);
-
 
     fgSizer->Add(SF,1,wxEXPAND);
     fgSizer->Add(G_AHI,1,wxEXPAND);
@@ -384,10 +392,7 @@ Daily::Daily(wxWindow *win)
     fgSizer->Add(LEAK,1,wxEXPAND);
     fgSizer->Add(TAP,1,wxEXPAND);
 
-
-    //m_mgr2.Update();
-    //DailyGraphHolder->Add(graph,1,wxEXPAND);
-    foobar_datehack=false;
+    foobar_datehack=false; // this exists due to a wxGTK bug.
     RefreshData();
 
 }
diff --git a/SleepyHeadMain.h b/SleepyHeadMain.h
index 2d140773..f2587415 100644
--- a/SleepyHeadMain.h
+++ b/SleepyHeadMain.h
@@ -27,10 +27,12 @@ public:
     Summary(wxWindow *win);
     virtual ~Summary();
     Machine *machine;
-    HistoryData *ahidata,*pressure,*leak;
-    gGraphWindow *AHI,*PRESSURE,*LEAK;
+    HistoryData *ahidata,*pressure,*leak,*usage,*bedtime,*waketime;
+    gGraphWindow *AHI,*PRESSURE,*LEAK,*USAGE;
     void RefreshData();
-
+	void AddData(HistoryData *d) { Data.push_back(d);  };
+protected:
+    list<HistoryData *> Data;
 };
 
 
diff --git a/graphs/graph.cpp b/graphs/graph.cpp
index e18650a0..24d24d6d 100644
--- a/graphs/graph.cpp
+++ b/graphs/graph.cpp
@@ -1905,3 +1905,30 @@ double HistoryCodeData::Calc(Day *day)
     return day->summary_avg(code);
 }
 
+UsageHistoryData::UsageHistoryData(Machine *_machine,int _days,T_UHD _uhd)
+:HistoryData(_machine,_days),uhd(_uhd)
+{
+}
+UsageHistoryData::~UsageHistoryData()
+{
+}
+double UsageHistoryData::Calc(Day *day)
+{
+    double d;
+    if (uhd==UHD_Bedtime) {
+        d=day->first().GetHour();
+        if (d<12) d+=24;
+        d+=(day->first().GetMinute()/60.0);
+        d+=(day->first().GetSecond()/3600.0);
+        return d;
+    }
+    else if (uhd==UHD_Waketime) {
+        d=day->last().GetHour();
+        d+=(day->last().GetMinute()/60.0);
+        d+=(day->last().GetSecond()/3600.0);
+        return d;
+    }
+    else if (uhd==UHD_Hours) return day->hours();
+    else
+        return 0;
+}
diff --git a/graphs/graph.h b/graphs/graph.h
index 43ef58b6..72570ad8 100644
--- a/graphs/graph.h
+++ b/graphs/graph.h
@@ -464,4 +464,16 @@ protected:
     MachineCode code;
 };
 
+
+enum T_UHD { UHD_Bedtime, UHD_Waketime, UHD_Hours };
+class UsageHistoryData:public HistoryData
+{
+public:
+    UsageHistoryData(Machine *_machine,int _days,T_UHD _uhd);
+    virtual ~UsageHistoryData();
+    virtual double Calc(Day *day);
+protected:
+    T_UHD uhd;
+};
+
 #endif // GRAPH_H
diff --git a/version.h b/version.h
index 6feed950..637d1828 100644
--- a/version.h
+++ b/version.h
@@ -4,7 +4,7 @@
 namespace AutoVersion{
 	
 	//Date Version Types
-	static const char DATE[] = "27";
+	static const char DATE[] = "28";
 	static const char MONTH[] = "05";
 	static const char YEAR[] = "2011";
 	static const char UBUNTU_VERSION_STYLE[] = "11.05";
@@ -16,14 +16,14 @@ namespace AutoVersion{
 	//Standard Version Type
 	static const long MAJOR = 0;
 	static const long MINOR = 7;
-	static const long BUILD = 1339;
-	static const long REVISION = 1809;
+	static const long BUILD = 1376;
+	static const long REVISION = 1990;
 	
 	//Miscellaneous Version Types
-	static const long BUILDS_COUNT = 5005;
-	#define RC_FILEVERSION 0,7,1339,1809
-	#define RC_FILEVERSION_STRING "0, 7, 1339, 1809\0"
-	static const char FULLVERSION_STRING[] = "0.7.1339.1809";
+	static const long BUILDS_COUNT = 5092;
+	#define RC_FILEVERSION 0,7,1376,1990
+	#define RC_FILEVERSION_STRING "0, 7, 1376, 1990\0"
+	static const char FULLVERSION_STRING[] = "0.7.1376.1990";
 	
 	//These values are to keep track of your versioning state, don't modify them.
 	static const long BUILD_HISTORY = 62;