diff --git a/cper-utils.c b/cper-utils.c
index ae71dc4..0821a16 100644
--- a/cper-utils.c
+++ b/cper-utils.c
@@ -342,7 +342,7 @@
 		return -1;
 	}
 	int hours = bcd_to_int(timestamp->Hours);
-	if (hours >= 24) {
+	if (hours > 24) {
 		return -1;
 	}
 	int minutes = bcd_to_int(timestamp->Minutes);
diff --git a/generator/cper-generate.c b/generator/cper-generate.c
index b1b105b..2cee1e0 100644
--- a/generator/cper-generate.c
+++ b/generator/cper-generate.c
@@ -24,9 +24,6 @@
 void generate_cper_record(char **types, UINT16 num_sections, FILE *out,
 			  GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
-	//Initialise randomiser.
-	init_random(0);
-
 	//Generate the sections.
 	void *sections[num_sections];
 	size_t section_lengths[num_sections];
@@ -199,7 +196,7 @@
 	//If the section name is "unknown", simply generate a random bytes section.
 	int section_generated = 0;
 	if (strcmp(type, "unknown") == 0) {
-		length = generate_random_section(location, rand() % 256);
+		length = generate_random_section(location, ALL_VALID);
 		section_generated = 1;
 	} else {
 		//Function defined section, switch on the type, generate accordingly.
diff --git a/generator/gen-utils.c b/generator/gen-utils.c
index 46642b2..b299f7b 100644
--- a/generator/gen-utils.c
+++ b/generator/gen-utils.c
@@ -8,6 +8,22 @@
 #include <libcper/BaseTypes.h>
 #include <libcper/generator/gen-utils.h>
 
+UINT32 lfsr = 0xACE1u;
+
+void cper_rand_seed(UINT32 seed)
+{
+	lfsr = seed;
+}
+
+UINT32 cper_rand()
+{
+	lfsr |= lfsr == 0; // if x == 0, set x = 1 instead
+	lfsr ^= (lfsr & 0x0007ffff) << 13;
+	lfsr ^= lfsr >> 17;
+	lfsr ^= (lfsr & 0x07ffffff) << 5;
+	return lfsr;
+}
+
 //Generates a random section of the given byte size, saving the result to the given location.
 //Returns the length of the section as passed in.
 size_t generate_random_section(void **location, size_t size)
@@ -21,7 +37,7 @@
 {
 	UINT8 *bytes = malloc(size);
 	for (size_t i = 0; i < size; i++) {
-		bytes[i] = rand();
+		bytes[i] = cper_rand();
 	}
 	return bytes;
 }
@@ -36,13 +52,7 @@
 	*error_section &= 0x7FFFFF; //Reserved bits 23-63
 
 	//Ensure error type has a valid value.
-	*(start + 1) =
-		CPER_ERROR_TYPES_KEYS[rand() % (sizeof(CPER_ERROR_TYPES_KEYS) /
-						sizeof(int))];
-}
-
-//Initializes the random seed for rand() using the current time.
-void init_random()
-{
-	srand(1);
+	*(start + 1) = CPER_ERROR_TYPES_KEYS[cper_rand() %
+					     (sizeof(CPER_ERROR_TYPES_KEYS) /
+					      sizeof(int))];
 }
diff --git a/generator/sections/gen-section-arm.c b/generator/sections/gen-section-arm.c
index c181663..ded953d 100644
--- a/generator/sections/gen-section-arm.c
+++ b/generator/sections/gen-section-arm.c
@@ -21,8 +21,8 @@
 			    GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Set up for generation of error/context structures.
-	UINT16 error_structure_num = rand() % 4 + 1; //Must be at least 1.
-	UINT16 context_structure_num = rand() % 3 + 1;
+	UINT16 error_structure_num = cper_rand() % 4 + 1; //Must be at least 1.
+	UINT16 context_structure_num = cper_rand() % 3 + 1;
 	void *error_structures[error_structure_num];
 	void *context_structures[context_structure_num];
 	size_t context_structure_lengths[context_structure_num];
@@ -37,7 +37,7 @@
 	}
 
 	//Determine a random amount of vendor specific info.
-	size_t vendor_info_len = rand() % 16 + 4;
+	size_t vendor_info_len = cper_rand() % 16 + 4;
 
 	//Create the section as a whole.
 	size_t total_len = 40 + (error_structure_num * ARM_ERROR_INFO_SIZE);
@@ -55,7 +55,7 @@
 	*section_length = total_len;
 
 	//Error affinity.
-	*(section + 12) = rand() % 4;
+	*(section + 12) = cper_rand() % 4;
 
 	//Reserved zero bytes.
 	UINT32 *validation = (UINT32 *)section;
@@ -87,7 +87,7 @@
 	for (size_t i = 0; i < vendor_info_len; i++) {
 		//Ensure only ascii is used so we don't
 		// fail base64E
-		*cur_pos = rand() % 127 + 1;
+		*cur_pos = cper_rand() % 127 + 1;
 		cur_pos += 1;
 	}
 
@@ -106,7 +106,7 @@
 	*(error_info + 1) = ARM_ERROR_INFO_SIZE;
 
 	//Type of error.
-	UINT8 error_type = rand() % 3;
+	UINT8 error_type = cper_rand() % 3;
 	*(error_info + 4) = error_type;
 
 	//Reserved bits for error information.
@@ -162,7 +162,7 @@
 size_t generate_arm_context_info(void **location)
 {
 	//Initial length is 8 bytes. Add extra based on type.
-	UINT16 reg_type = rand() % 9;
+	UINT16 reg_type = cper_rand() % 9;
 	UINT32 reg_size = 0;
 
 	//Set register size.
diff --git a/generator/sections/gen-section-ccix-per.c b/generator/sections/gen-section-ccix-per.c
index e648cba..2547d8d 100644
--- a/generator/sections/gen-section-ccix-per.c
+++ b/generator/sections/gen-section-ccix-per.c
@@ -16,7 +16,7 @@
 {
 	//Create a random length for the CCIX PER log.
 	//The log attached here does not necessarily conform to the CCIX specification, and is simply random.
-	int log_len = (rand() % 5 + 1) * 32;
+	int log_len = (cper_rand() % 5 + 1) * 32;
 
 	//Create random bytes.
 	int size = 16 + log_len;
diff --git a/generator/sections/gen-section-cxl-component.c b/generator/sections/gen-section-cxl-component.c
index 615a152..6c4e60e 100644
--- a/generator/sections/gen-section-cxl-component.c
+++ b/generator/sections/gen-section-cxl-component.c
@@ -16,7 +16,7 @@
 {
 	//Create a random length for the CXL component event log.
 	//The logs attached here do not necessarily conform to the specification, and are simply random.
-	int log_len = rand() % 64;
+	int log_len = cper_rand() % 64;
 
 	//Create random bytes.
 	int size = 32 + log_len;
diff --git a/generator/sections/gen-section-cxl-protocol.c b/generator/sections/gen-section-cxl-protocol.c
index 1918d68..e171c7f 100644
--- a/generator/sections/gen-section-cxl-protocol.c
+++ b/generator/sections/gen-section-cxl-protocol.c
@@ -16,15 +16,15 @@
 {
 	//Create a random length for the CXL DVSEC and CXL error log.
 	//The logs attached here do not necessarily conform to the specification, and are simply random.
-	int dvsec_len = rand() % 64;
-	int error_log_len = rand() % 64;
+	int dvsec_len = cper_rand() % 64;
+	int error_log_len = cper_rand() % 64;
 
 	//Create random bytes.
 	int size = 116 + dvsec_len + error_log_len;
 	UINT8 *bytes = generate_random_bytes(size);
 
 	//Set CXL agent type.
-	int cxl_agent_type = rand() % 2;
+	int cxl_agent_type = cper_rand() % 2;
 	*(bytes + 8) = cxl_agent_type;
 
 	//Set reserved areas to zero.
diff --git a/generator/sections/gen-section-dmar.c b/generator/sections/gen-section-dmar.c
index 7c2a85f..4062338 100644
--- a/generator/sections/gen-section-dmar.c
+++ b/generator/sections/gen-section-dmar.c
@@ -25,10 +25,10 @@
 	*(reserved + 1) = 0;
 
 	//Set expected values.
-	*(bytes + 4) = rand() % 0xC;   //Fault reason.
-	*(bytes + 5) = rand() % 2;     //Access type.
-	*(bytes + 6) = rand() % 2;     //Address type.
-	*(bytes + 7) = rand() % 2 + 1; //Architecture type.
+	*(bytes + 4) = cper_rand() % 0xC;   //Fault reason.
+	*(bytes + 5) = cper_rand() % 2;	    //Access type.
+	*(bytes + 6) = cper_rand() % 2;	    //Address type.
+	*(bytes + 7) = cper_rand() % 2 + 1; //Architecture type.
 
 	//Set return values, exit.
 	*location = bytes;
diff --git a/generator/sections/gen-section-firmware.c b/generator/sections/gen-section-firmware.c
index 6ec4b88..bf8a7ee 100644
--- a/generator/sections/gen-section-firmware.c
+++ b/generator/sections/gen-section-firmware.c
@@ -25,10 +25,10 @@
 	}
 
 	//Set expected values.
-	*(bytes + 1) = 2;    //Revision, referenced version of spec is 2.
+	*(bytes + 1) = 2;	  //Revision, referenced version of spec is 2.
 	UINT64 *record_id = (UINT64 *)(bytes + 8);
-	*record_id = 0;	     //Record ID, should be forced to NULL.
-	*bytes = rand() % 3; //Record type.
+	*record_id = 0;		  //Record ID, should be forced to NULL.
+	*bytes = cper_rand() % 3; //Record type.
 
 	//Set return values, exit.
 	*location = bytes;
diff --git a/generator/sections/gen-section-generic.c b/generator/sections/gen-section-generic.c
index 54de52e..4d25559 100644
--- a/generator/sections/gen-section-generic.c
+++ b/generator/sections/gen-section-generic.c
@@ -33,7 +33,7 @@
 	for (int i = 0; i < 128; i++) {
 		UINT8 *byte = start_byte + 24 + i;
 		//Ensure only ascii is used
-		*byte = rand() % 127 + 1;
+		*byte = cper_rand() % 127 + 1;
 
 		//Null terminate last byte.
 		if (i == 127) {
diff --git a/generator/sections/gen-section-ia32x64.c b/generator/sections/gen-section-ia32x64.c
index 647f77d..8507d1b 100644
--- a/generator/sections/gen-section-ia32x64.c
+++ b/generator/sections/gen-section-ia32x64.c
@@ -20,8 +20,8 @@
 				GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Set up for generation of error/context structures.
-	UINT16 error_structure_num = rand() % 4 + 1;
-	UINT16 context_structure_num = rand() % 4 + 1;
+	UINT16 error_structure_num = cper_rand() % 4 + 1;
+	UINT16 context_structure_num = cper_rand() % 4 + 1;
 	void *error_structures[error_structure_num];
 	void *context_structures[context_structure_num];
 	size_t context_structure_lengths[context_structure_num];
@@ -99,7 +99,7 @@
 	//Create a random type of error structure.
 	EFI_GUID *guid = (EFI_GUID *)error_structure;
 	UINT64 *check_info = (UINT64 *)(error_structure + 24);
-	int error_structure_type = rand() % 4;
+	int error_structure_type = cper_rand() % 4;
 	switch (error_structure_type) {
 	//Cache
 	case 0:
@@ -149,16 +149,16 @@
 size_t generate_ia32x64_context_structure(void **location)
 {
 	//Initial length is 16 bytes. Add extra based on type.
-	int reg_type = rand() % 8;
+	int reg_type = cper_rand() % 8;
 	int reg_size = 0;
 
 	//Set register size.
 	if (reg_type == 2) {
-		reg_size = 92;			  //IA32 registers.
+		reg_size = 92;			       //IA32 registers.
 	} else if (reg_type == 3) {
-		reg_size = 244;			  //x64 registers.
+		reg_size = 244;			       //x64 registers.
 	} else {
-		reg_size = (rand() % 5 + 1) * 32; //Not table defined.
+		reg_size = (cper_rand() % 5 + 1) * 32; //Not table defined.
 	}
 
 	//Create structure randomly.
diff --git a/generator/sections/gen-section-memory.c b/generator/sections/gen-section-memory.c
index a45f0ce..866fe0c 100644
--- a/generator/sections/gen-section-memory.c
+++ b/generator/sections/gen-section-memory.c
@@ -30,7 +30,7 @@
 	*(bytes + 73) &= ~0x1C; //Extended bits 2-4
 
 	//Fix values that could be above range.
-	*(bytes + 72) = rand() % 16; //Memory error type
+	*(bytes + 72) = cper_rand() % 16; //Memory error type
 
 	//Fix error status.
 	create_valid_error_section(bytes + 8);
@@ -61,8 +61,8 @@
 	*(bytes + 63) = 0; //Reserved byte 63
 
 	//Fix values that could be above range.
-	*(bytes + 61) = rand() % 16; //Memory error type
-	*(bytes + 62) = rand() % 2;  //Status
+	*(bytes + 61) = cper_rand() % 16; //Memory error type
+	*(bytes + 62) = cper_rand() % 2;  //Status
 
 	//Fix error status.
 	create_valid_error_section(bytes + 8);
diff --git a/generator/sections/gen-section-nvidia.c b/generator/sections/gen-section-nvidia.c
index a06f545..83b8845 100644
--- a/generator/sections/gen-section-nvidia.c
+++ b/generator/sections/gen-section-nvidia.c
@@ -26,8 +26,6 @@
 		"MCF",	     "GPU-STATUS",    "GPU-CONTNMT",   "SMMU",
 	};
 
-	init_random();
-
 	//Create random bytes.
 	int numRegs = 6;
 	size_t size = offsetof(EFI_NVIDIA_ERROR_DATA, Register) +
@@ -45,7 +43,8 @@
 	nvidia_error->Severity %= 4;
 
 	//Signature.
-	int idx_random = rand() % (sizeof(signatures) / sizeof(signatures[0]));
+	int idx_random =
+		cper_rand() % (sizeof(signatures) / sizeof(signatures[0]));
 	strncpy(nvidia_error->Signature, signatures[idx_random],
 		sizeof(nvidia_error->Signature) - 1);
 	nvidia_error->Signature[sizeof(nvidia_error->Signature) - 1] = '\0';
diff --git a/generator/sections/gen-section-pci-bus.c b/generator/sections/gen-section-pci-bus.c
index ca0f255..c0e59c0 100644
--- a/generator/sections/gen-section-pci-bus.c
+++ b/generator/sections/gen-section-pci-bus.c
@@ -33,7 +33,7 @@
 
 	//Fix values that could be above range.
 	UINT16 *error_type = (UINT16 *)(bytes + 16);
-	*error_type = rand() % 8;
+	*error_type = cper_rand() % 8;
 
 	//Fix error status.
 	create_valid_error_section(bytes + 8);
diff --git a/generator/sections/gen-section-pci-dev.c b/generator/sections/gen-section-pci-dev.c
index 6deac59..3982d63 100644
--- a/generator/sections/gen-section-pci-dev.c
+++ b/generator/sections/gen-section-pci-dev.c
@@ -15,8 +15,8 @@
 				GEN_VALID_BITS_TEST_TYPE validBitsType)
 {
 	//Generate how many register pairs will be attached to this section.
-	UINT32 num_memory_pairs = rand() % 4;
-	UINT32 num_io_pairs = rand() % 4;
+	UINT32 num_memory_pairs = cper_rand() % 4;
+	UINT32 num_io_pairs = cper_rand() % 4;
 	UINT32 num_registers = num_memory_pairs + num_io_pairs;
 
 	//Create random bytes.
diff --git a/generator/sections/gen-section-pcie.c b/generator/sections/gen-section-pcie.c
index db9dfd9..2111d28 100644
--- a/generator/sections/gen-section-pcie.c
+++ b/generator/sections/gen-section-pcie.c
@@ -36,14 +36,14 @@
 	*(bytes + 39) = 0;     //Device ID byte 15
 
 	//Set expected values.
-	int minor = rand() % 128;
-	int major = rand() % 128;
+	int minor = cper_rand() % 128;
+	int major = cper_rand() % 128;
 	*version = int_to_bcd(minor);
 	*version |= int_to_bcd(major) << 8;
 
 	//Fix values that could be above range.
 	UINT32 *port_type = (UINT32 *)(bytes + 8);
-	*port_type = PCIE_PORT_TYPES[rand() %
+	*port_type = PCIE_PORT_TYPES[cper_rand() %
 				     (sizeof(PCIE_PORT_TYPES) / sizeof(int))];
 
 	//Set return values, exit.
diff --git a/include/libcper/generator/gen-utils.h b/include/libcper/generator/gen-utils.h
index 33ae2ab..5ba61d1 100644
--- a/include/libcper/generator/gen-utils.h
+++ b/include/libcper/generator/gen-utils.h
@@ -16,7 +16,10 @@
 
 size_t generate_random_section(void **location, size_t size);
 UINT8 *generate_random_bytes(size_t size);
-void init_random();
+
+void cper_rand_seed(UINT32 seed);
+UINT32 cper_rand();
+
 void create_valid_error_section(UINT8 *start);
 
 #ifdef __cplusplus
