diff --git a/src/include/kom-types.h b/src/include/kom-types.h
index 8382be1bb3b289f6335cddf14df02a8fb3d01070..ff1820aa654b76007dcbee51577bf0428cdbe689 100644
--- a/src/include/kom-types.h
+++ b/src/include/kom-types.h
@@ -1,5 +1,5 @@
 /*
- * $Id: kom-types.h,v 0.51 2002/09/08 10:40:40 ceder Exp $
+ * $Id: kom-types.h,v 0.52 2002/11/06 18:40:14 ceder Exp $
  * Copyright (C) 1990-1999, 2001-2002  Lysator Academic Computer Association.
  *
  * This file is part of the LysKOM server.
@@ -282,20 +282,30 @@ typedef struct {
 
 /*  Information about a person's membership in a conference  */
 
+struct read_range {
+    Local_text_no  first_read;
+    Local_text_no  last_read;
+};
+    
 typedef struct {
     unsigned long   position;
     Conf_no		conf_no;
     unsigned char	priority;	/* Interrupt priority */
     Time		last_time_read;	/* Updated every time a text in this
-					   conf. is marked as read.	*/
-    Local_text_no	last_text_read;	/* All texts before and inclusive this
-					   are read	*/
-    unsigned short	no_of_read;
-    Local_text_no * read_texts;	/* Texts after last_text_read. Sorted
-                                   in ascending order */
-    Pers_no added_by;
+					   conference is marked as read.  */
+    unsigned int	no_of_read_ranges;
+    struct read_range * read_ranges;    /* Sorted in ascending order. */
+    Pers_no             added_by;
     Time                added_at;
     Membership_type type;
+
+    /* read_ranges is cleared before it reaches the Protocol A output
+       layer in certain situations, even though that layer wants to
+       emit the last-text-read element.  This happens for example when
+       get-membership [99] is called with want-read-texts == 0.  This
+       variable maintains the last-text-read value. */
+    Bool skip_read_texts;
+
 } Membership;