Index: /fact/FADctrl/FADBoard.cc
===================================================================
--- /fact/FADctrl/FADBoard.cc	(revision 11177)
+++ /fact/FADctrl/FADBoard.cc	(revision 11178)
@@ -57,4 +57,5 @@
   DIM_Rate = new DimService((ID.str()+"RateHz").c_str(), Status.Rate);
   DIM_Frequency = new DimService((ID.str()+"Frequency").c_str(), Status.Frequency);
+  DIM_Lock = new DimService((ID.str()+"Lock").c_str(), (char *) "S", &Status.Lock, NChips*sizeof(bool));
   DIM_TriggerNum = new DimService((ID.str()+"TriggerNum").c_str(), (char *) "I", &Status.TriggerNum, sizeof(Status.TriggerNum));
   DIM_Temp = new DimService((ID.str()+"Temperature").c_str(), (char *) "F", NULL, 0);
@@ -99,13 +100,9 @@
   }
 
-  delete DIM_Name;
-  delete DIM_Status;
-  delete DIM_ID;
-  delete DIM_Rate;
-  delete DIM_Frequency;
-  delete DIM_TriggerNum;
-  delete DIM_Temp;
-  delete DIM_DAC;
-  delete DIM_ROI;
+  delete DIM_Name;			delete DIM_Status;
+  delete DIM_ID;			delete DIM_Rate;
+  delete DIM_Frequency;		delete DIM_Lock;
+  delete DIM_TriggerNum;	delete DIM_Temp;
+  delete DIM_DAC;			delete DIM_ROI;
   delete DIM_ACalData;  
   delete[] Name;
@@ -495,6 +492,6 @@
 	  Status.PhaseShift = Header->adc_clock_phase_shift;
 	  for (unsigned int i=0; i<NChips; i++) {
-		if ((ntohs(Header->PLLLCK)>>12 & (1<<i)) != 0) Status.Lock[i] = true;
-		else Status.Lock[i] = false;
+		if ((ntohs(Header->PLLLCK)>>12 & (1<<i)) != 0) Status.Lock[i] = 1;
+		else Status.Lock[i] = 0;
 	  }
 
@@ -553,5 +550,8 @@
 		if (PrevStatus.TriggerNum != Status.TriggerNum) DIM_TriggerNum->updateService();
 		if (PrevStatus.Rate != Status.Rate) DIM_Rate->updateService();
-		
+
+		if (memcmp(PrevStatus.Lock, Status.Lock, sizeof(Status.Lock)) != 0) {
+		  DIM_Lock->updateService();
+		}
 		if (memcmp(PrevStatus.Temp, Status.Temp, sizeof(Status.Temp)) != 0) {
 		  DIM_Temp->updateService(Status.Temp, sizeof(Status.Temp));
Index: /fact/FADctrl/FADBoard.h
===================================================================
--- /fact/FADctrl/FADBoard.h	(revision 11177)
+++ /fact/FADctrl/FADBoard.h	(revision 11178)
@@ -29,5 +29,5 @@
 	int Socket;
 	pthread_mutex_t Mutex;
-	DimService *DIM_Name, *DIM_Status, *DIM_ID, *DIM_Frequency, *DIM_TriggerNum;
+	DimService *DIM_Name, *DIM_Status, *DIM_ID, *DIM_Frequency, *DIM_Lock, *DIM_TriggerNum;
 	DimService *DIM_Rate, *DIM_Temp, *DIM_ROI, *DIM_DAC, *DIM_ACalData;
 
@@ -60,5 +60,5 @@
 
 	  float Frequency;
-	  bool Lock[NChips];
+	  short Lock[NChips];
 	  int8_t PhaseShift;
 
Index: /fact/FADctrl/History.txt
===================================================================
--- /fact/FADctrl/History.txt	(revision 11177)
+++ /fact/FADctrl/History.txt	(revision 11178)
@@ -33,2 +33,3 @@
 7/6/2011	DIM event service only contains active boards
 21/6/2011	Command 'boards' takes 'none as argument
+24/6/2011	PLL lock status published as DIM service
Index: /fact/tools/Edd/Edd.cc
===================================================================
--- /fact/tools/Edd/Edd.cc	(revision 11177)
+++ /fact/tools/Edd/Edd.cc	(revision 11178)
@@ -536,22 +536,28 @@
 
 	for (int j=0; j<4; j++) {
+      Line = new EddLineDisplay(Board+"Lock", j);
+	  Line->setMaximumWidth(20);
+      Button[i/20]->Layout()->addWidget(Line, i+7, 3+j, 1, 1);
+	}
+
+	for (int j=0; j<4; j++) {
 	  Plot->AddService(Board+"Temperature", j);
 
       Line = new EddLineDisplay(Board+"Temperature", j);
 	  Line->setMinimumWidth(40);
-      Button[i/20]->Layout()->addWidget(Line, i+7, 3+j, 1, 1);
+      Button[i/20]->Layout()->addWidget(Line, i+7, 7+j, 1, 1);
 	}
 
     Line = new EddLineDisplay(Board+"TriggerNum");
 	Line->setMinimumWidth(40);
-    Button[i/20]->Layout()->addWidget(Line, i+7, 7, 1, 1);
+    Button[i/20]->Layout()->addWidget(Line, i+7, 11, 1, 1);
 
 	Line = new EddLineDisplay(Board+"RateHz");
 	Line->setMinimumWidth(50);
-    Button[i/20]->Layout()->addWidget(Line, i+7, 15, 1, 1);
+    Button[i/20]->Layout()->addWidget(Line, i+7, 19, 1, 1);
 
 	Line = new EddLineDisplay(Board+"Status");
 	Line->setMaximumWidth(150);
-    Button[i/20]->Layout()->addWidget(Line, i+7, 16, 1, 1);
+    Button[i/20]->Layout()->addWidget(Line, i+7, 20, 1, 1);
   }
 }
